即使用户通过点击后退按钮来到页面,也要执行document.ready

时间:2012-08-08 18:54:58

标签: jquery

我有一个带有jQuery $(document).ready()的PHP页面,它对页面上的表单进行了一些更改。这很好用。但是,如果我来到这个页面,然后转到另一个页面,然后从浏览器点击“返回”并返回到此页面,则$(document).ready()功能似乎根本不运行。这种情况发生在FF和Chrome上。

即使用户点击浏览器的后退按钮进入我的页面,我是否可以通过某种方式执行document.ready

3 个答案:

答案 0 :(得分:8)

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

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

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

如果您需要专门检测何时通过后退按钮到达页面,而不是第一次进入时,则可能需要控制一点状态;上面的链接可以帮助你。

答案 1 :(得分:0)

来自未来的问候!

这是旧的,但我发现了一个与2018年相关的解决方案。

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

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

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

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

当然是!

然后,我的解决方案很简单。

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

new Date().getTime();

作为AJAX呼叫网址的查询参数,返回的数据很新鲜。

我希望将来花一个时间来节省这个人的时间。

来自明天的快乐编码!

答案 2 :(得分:-1)

您可以尝试此步骤。

首先添加隐藏字段。

<input id="reload" type="hidden" name="reload" value="" />

第二次添加javascript代码。

<script type="text/javascript">
   $(document).ready(function()
    {
            var d = new Date();
            d = d.getTime();
            if ($('#reload').val().length == 0)
            {
                    $('#reload').val(d);
                    $('body').show();
            }
            else
            {
                    $('#reload').val('');
                    location.reload();
            }
    });