【问题标题】:Javascript: detect when page has been navigated "back" toJavascript:检测页面何时“返回”到
【发布时间】:2011-09-14 00:58:32
【问题描述】:

假设我在浏览器中打开了一个页面,然后我转到地址栏并输入另一个页面。然后我点击后退按钮转到我的原始页面。我想写一些 Javascript 代码来检测这种情况并做出响应。

在这种情况下,我不能说ready 事件、onload 或页面本身上的任何内联 Javascript 都不会重新执行。还有什么我可以做的吗?

跨浏览器支持在这里很重要。首选但不是必需的基于 jQuery 的解决方案。

为清楚起见进行编辑:我假设的导航是页面 A -> 页面 B -> 返回页面 A,我假设页面 B 可能在我的控制之下,也可能不在我的控制之下。

【问题讨论】:

  • 当用户“返回”到某个页面时,您到底想做什么?
  • 脚本将在 onload 事件上执行。
  • 如果没有将 nocache 放入您的元标记中
  • 我只想触发一些事件,它可以在我的控制下调用一些脚本,以便我可以检测到它并采取适当的措施。
  • @Grumpy 似乎是对的。出于某种原因,在我之前的测试中似乎并非如此。

标签: javascript jquery html navigation


【解决方案1】:

您应该尝试在两个页面上为用户提供一个 cookie,导航到页面和页面本身,以及日期和时间,并比较它们是否接近,或者它们是否表明他已经在一个页面上,在另一个上,然后重定向。

另一种选择是在用户被重定向时给他一个 cookie

【讨论】:

  • 我假设导航到的页面不在我的控制之下。我会更新我的问题。
  • 导航页面是否将用户重定向到您的页面?还是要检查用户是否单击了“返回按钮”?您可以为导航网站提供 URL 吗?因为也许你可以给它一个特殊的 URL
  • 不,我的意思是a)用户进入我的页面,b)用户进入地址栏并进入其他页面,c)用户单击后退按钮。我想检测 c)。
【解决方案2】:

在 Firefox 中,您可以检查 DomContentLoaded 事件。对于跨浏览器的解决方案,需要做更多的工作:

http://dean.edwards.name/weblog/2005/09/busted/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多