在Javascript中检测浏览器刷新

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

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

$.address.init(function(event) { }).change(function(event) { SummaryDiv.SwapPanels(newPanelID); } 

有任何想法吗?

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

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

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

UPDATE

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

在网上找到这个…

有一个javascript聪明的方法和一个cookie方法。

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

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

我能够强制更改事件代码在刷新时运行

  window.onload = $.address.update(function(){ ... })