在Javascript中检测浏览器刷新
Posted
技术标签:
【中文标题】在Javascript中检测浏览器刷新【英文标题】:Detect Browser Refresh in Javascript 【发布时间】:2011-03-15 22:24:57 【问题描述】:我很好奇是否有一种方法可以专门检测 javascript 中的浏览器刷新事件。我们正在使用 jQuery.address 插件为 AJAX 函数提供前进和后退按钮功能。我面临的问题是这个插件似乎没有检测到用户是否刷新了页面。
每次用户在浏览器历史记录中向前或向后移动时都会执行此代码。我也希望它在用户刷新时执行。
$.address.init(function(event)
).change(function(event)
SummaryDiv.SwapPanels(newPanelID);
有什么想法吗?
【问题讨论】:
【参考方案1】:按照这些思路,我有一个页面,如果刷新,我不想重复其行为,因此我按照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】:我的一个天真的尝试是在每次更改后简单地将当前状态存储到某个 cookie 中,然后在每次页面加载时再次加载它们。
【讨论】:
这就是我的做法,无需查找其他方法。但要知道,这种方法很容易被用户避免/编辑。 整个网站都可以禁用 Javascript :)【参考方案3】:在网上为您找到了这个...
既有 javascript 巧妙的方法,也有 cookie 方法。
http://www.tedpavlic.com/post_detect_refresh_with_javascript.php
【讨论】:
【参考方案4】:在页面刷新时,javascript 也会重新加载。那么你不能直接在jQuery的ready方法中指定你想要发生的事情吗?
【讨论】:
【参考方案5】:我能够强制更改事件代码在刷新时运行
window.onload = $.address.update(function()
...
)
【讨论】:
以上是关于在Javascript中检测浏览器刷新的主要内容,如果未能解决你的问题,请参考以下文章