在Javascript中检测浏览器刷新

Nic*_*ick 13 javascript jquery

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

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

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

        SummaryDiv.SwapPanels(newPanelID);
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Luk*_*keN 5

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

  • 可以通过禁用Javascript整个网站:) (5认同)

Ben*_*ynn 5

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

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

UPDATE

我发现,如果刷新自动发生,至少Mobile Safari会忽略散列(例如,在再次查看之前,页面数据从缓存中清除).我最终使用了这里描述的更复杂的解决方案.