1

我知道如何使用 window.location。问题是,(至少在 FF 中)它会从历史记录中删除您所在的页面。例如,我在页面 A,我导航到 B,window.location 用于将我发送到 C。如果在页面 C,我点击返回,我最终在 A,而不是 B。

有没有其他方法可以在不从历史记录中删除当前页面的情况下导航到另一个页面?

编辑:如果您在 Firebug 中运行代码,则不会发生这种情况。

这是一个显示问题的超级简单页面(是的,我知道代码很丑,它不是真正的代码):

<html>
<head><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"> </script>
<body>  
<div class="foo"></div>
<a href="javascript:$('.foo').html('<scri'+'pt type=&quot;text/javascript&quot;>window.location = &quot;c.html&quot;</s'+'cript>');">b</a>

EDIT2:jQuery 是问题所在,setTimeout也是答案。我在下面添加了我的解决方案,以防其他人遇到这种奇怪的边缘情况。

EDIT3:这个例子被简化以使其更容易测试。在实际情况下,点击处理程序会进行一个返回 HTML 的 Ajax 调用,因此我们不能通过编写 window.location = 不管来简化整个事情。代码来自服务器,嵌入在 HTML 中。

4

5 回答 5

3

setTimeout是答案。

$(div).html('<script...> setTimeout(function() { window.location = url; },10); </script>');

没有这个问题。它必须与 jQuery 执行内联脚本的方式有关(通过script在元素中创建标签head)。

于 2010-02-24T20:50:18.427 回答
0

你可以使用window.location.assign(URL).

于 2010-02-24T18:12:24.390 回答
0

我在 Firefox 3.6 中没有看到这种行为。按照您的示例,我从 stackoverflow.com 转到 google.com,然后从那里我使用 Firebug 控制台窗口设置 window.location = ' http://facebook.com '。到了那里,这三个都在我的浏览器历史记录中。

于 2010-02-24T18:12:48.540 回答
0

这只是一个hack,我不知道它是否会起作用。window.history.back(1)使用设置 URL 后尝试window.location = URL;

希望这可以帮助。

于 2010-02-24T20:36:13.037 回答
-1

使用location.href而不是位置。

于 2010-02-24T18:11:29.730 回答