我想要一个在用户点击重新加载时触发的事件处理程序。是onrefresh还是onreload要添加的正确处理程序?此外,这还会在onunload之前或之后开火吗?浏览器是否存在不一致之处?感谢。
答案 0 :(得分:6)
我认为没有名为onrefresh或onreload的事件。您可以知道页面何时卸载,但知道原因(即用户下一步的位置)是在JavaScript的安全沙箱之外。了解页面是否已重新加载的唯一方法是知道用户在最后一页请求中的位置,这也超出了JavaScript的范围。您有时可以通过document.referrer
获取,但它依赖于浏览器的安全设置来允许访问该信息。
答案 1 :(得分:4)
WindowEventHandlers.onbeforeunload事件处理程序属性包含发送beforeunload时执行的代码。当窗口即将卸载其资源时,将触发此事件。
window.onbeforeunload = function () {
return 'Are you sure you want to leave?';
}
这将向用户显示一个确认对话框,其中包含您在函数中返回的消息。它会让用户离开此页面或取消选项。
无法确认,因为它可能是出于恶意原因使用。
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload
答案 2 :(得分:2)
如果将cookie设置为特定页面的组合,并检查onload事件,则可以模拟您寻找的不存在的事件。您可以调整cookie过期,以便仅在初始onload是某个时间间隔之前计算重新加载。
答案 3 :(得分:0)
我没有意识到的onreload或onrefresh事件。当然,从浏览器中运行的javascript来说这没什么意义。现有窗口及其所有内容被有效地丢弃。因此,您需要使用onunload现有上下文或由于重新加载而创建的新上下文的load事件。
答案 4 :(得分:0)
我确实相信artlung可能确实找到了一种方法,实际上......然而,他的版本依赖于cookie,并且可以通过多种方式切断使用;然后,解决方案是使用您选择的服务器端语言来保存页面unload
通过JavaScript时的时间戳(仍然是一个漏洞,是的,但为什么不在那里抛出另一个想法,呵呵?)然后在每次页面加载时再次测试它;如果您检测到差异小于几秒钟,用户可能只是重新加载您的页面。 :)
答案 5 :(得分:0)
可以使用会话。比cookie更容易,不必担心过期或数据库。这将覆盖除第一个页面之外的任何页面。我不认为会话超全局可用到第二页。如果这是一个问题,您可以启动会话并在没有活动会话时立即重新加载页面。
答案 6 :(得分:0)
其onunload 因为当您点击刷新时,浏览器会“卸载”,然后再次加载