19

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

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

4

2 回答 2

20

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

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

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

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

于 2018-01-11T18:36:53.090 回答
3

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

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

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

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

当然是!

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

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

new Date().getTime();

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

于 2018-03-22T22:00:27.580 回答