javascript - 我可以为特定元素覆盖 onbeforeunload 吗?

标签 javascript events

我有一个页面需要做很多工作,我不希望用户在没有收到警告的情况下离开该页面(关闭浏览器、点击后退按钮等)。我发现 onbeforeunload 事件(我认为它是特定于 IE 的,对我来说效果很好,因为该项目使用了大量 ActiveX)效果很好。

问题是,我希望用户能够随时点击右上角的“帮助”小图标,弹出一个帮助窗口。这会导致 onbeforeunload 触发,即使主窗口永远不会移动并且页面永远不会卸载。

在 onbeforeunload 事件运行时运行的 JavaScript 函数只是将文本放入 event.returnValue。如果我能以某种方式确定帮助图标是被单击的图标,那么在那种情况下我就不能将文本放入 event.returnValue 中。但是我怎么能让页面弄明白呢?

最佳答案

让我猜猜:帮助“图标”实际上是一个带有javascript: url 的链接?将其更改为真正的按钮、真正的链接,或者至少将功能放在 onclick 事件处理程序中(防止默认行为)。问题解决了。

<!-- clicking this link will do nothing. No onbeforeunload handler triggered. 
Nothing. 
And you could put something in before the return false bit...
...and the onunload handler would still not get called... -->
<a href="http://www.google.com/" onclick="return false;">blah1</a>
<!-- this should also do nothing, but IE will trigger the onbeforeunload 
handler -->
<a href="javascript:void(0)">blah2</a>

关于javascript - 我可以为特定元素覆盖 onbeforeunload 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57791/

相关文章:

javascript - 如何以三元+箭头表示法插入 "for"

jquery - 使用 jQuery 变形图像

内容加载后调用的 AngularJs 事件

events - 启动确认服务

javascript - 开发小书签时需要考虑哪些设计和安全注意事项?

javascript - Backbone.js "use new for side effects"与 JSHint 是否相反?

c# - 在使用 C# 的 Windows 窗体应用程序中正确使用 OnClick 与 MouseClick 事件

c# - 通过事件参数的异步事件处理程序回调

android - 为什么无法使用 EventBus 注册 Activity ?

javascript - 如何在读取 XLS/XLSX 本地文件时使用 IE 的 javascript 代码启用未标记为安全的 ActiveX 控件