在Javascript中检测浏览器刷新

时间:2010-07-14 15:29:01

标签: javascript jquery

我很好奇是否有办法在javascript中专门检测浏览器刷新事件。我们使用jQuery.address插件为AJAX函数提供前进和后退按钮功能。我面临的问题是,这个插件似乎无法检测用户是否刷新了页面。

每次用户在浏览器历史记录中前进或后退时,都会执行此代码。我还希望它在用户刷新时执行。

 $.address.init(function(event) {
}).change(function(event) {

        SummaryDiv.SwapPanels(newPanelID);
    }

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

我的一个天真的尝试是在每次更改后简单地将当前状态存储到某个cookie中,然后在每次页面加载时再次加载它们。

答案 1 :(得分:5)

沿着这些方向,我有一个页面,如果刷新我不想重复的行为,所以我按照this answer中的描述以编程方式更改了哈希。

checkRefresh: function() {
    if (document.location.hash === '#visited') {
        console.log('Refreshed');
        return true;
    } else {
        document.location.hash = 'visited';
        return false;
    }
}

<强>更新

我发现,如果自动刷新,至少Mobile Safari会忽略哈希值(例如,在再次查看之前,页面数据从缓存中清除)。我最终使用了更复杂的解决方案described here

答案 2 :(得分:4)

在网上找到你...

同时使用javascript聪明的方法和Cookie方法。

http://www.tedpavlic.com/post_detect_refresh_with_javascript.php

答案 3 :(得分:1)

在页面刷新时,javascript也会重新加载。那么你不能直接在jQuery的ready方法中指定你想要发生什么吗?

答案 4 :(得分:1)