【问题标题】:Execute document.ready even if user came to the page by hitting the back button即使用户通过点击后退按钮进入页面,也执行 document.ready
【发布时间】:2012-08-05 23:03:18
【问题描述】:

我有一个带有 jQ​​uery 的 $(document).ready() 的 PHP 页面,它对页面上的表单进行了一些更改。这工作正常。但是,如果我来到这个页面,然后去另一个页面,然后从浏览器中点击“返回”并返回到这个页面,$(document).ready() 函数似乎根本没有运行。这发生在 FF 和 Chrome 上。

有没有什么方法可以让document.ready 执行,即使用户点击浏览器的后退按钮来访问我的页面?

【问题讨论】:

  • 可能是你的表单开启了自动完成功能
  • 两年前,几秒搜索:stackoverflow.com/questions/2638292/…
  • @Musa,即使根本没有使用任何形式,也会发生这种情况。基本上,如果通过点击浏览器的后退按钮访问页面,则 document.ready 函数不会触发:(
  • @Alfabravo 谢谢!那行得通:)您也可以将其发布为答案吗?那我就关了

标签: jquery


【解决方案1】:

我遇到了完全相同的问题; @Alfabravo 的链接在这里帮助了我很多: https://stackoverflow.com/a/12648785/679240

下面的代码对我来说已经足够好了,因为我真正需要的是在用户进入页面或通过后退按钮到达页面时进行一些清理:

$(window).on('pageshow', function(){
    console.info('Entered the page!');
});

如果你需要专门检测页面是什么时候通过返回按钮到达的,而第一次进入时不需要,你可能需要控制一下状态;上面的链接可能会对您有所帮助。

【讨论】:

    【解决方案2】:

    我的用例是,当点击返回按钮时,ready 事件被触发并且我的处理函数执行得很好。

    尽管如此,我发现我的一些页面数据仍然过时。

    我输入了一些console.log()s 来断言所有函数实际上都被调用了。

    对于我的特殊情况,加载页面时会调用一些 AJAX 来从我的服务器加载一些数据。我发现实际上是被缓存的 API 响应!!!

    当然是!

    那么,我的解决方案很简单。

    我添加了一个新生成的时间戳

    new Date().getTime();

    作为 AJAX 调用 URL 的查询参数,瞧,返回的数据是新鲜的。

    【讨论】:

    • 仅供参考,这种技术是众所周知的,它被称为缓存破坏
    • 这篇提醒我AJAX响应内容的帖子也可以被缓存,所以谢谢你的未来。
    • 致此答案的最新编辑:感谢您尝试改进它,但我发现您的编辑大多只是消除了我的幽默尝试。这是一个社交平台,只要核心内容实用,我认为没有理由在答案中避免个性化。如果你是 Futurama 的粉丝,也许你会更开心。谨请您不要进行进一步的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2013-04-23
    相关资源
    最近更新 更多