Javascript 在卸载之前或在卸载之前
我一直在想我应该使用哪一个:Javascript 在卸载之前或在卸载之前,javascript,dom-events,onbeforeunload,Javascript,Dom Events,Onbeforeunload,我一直在想我应该使用哪一个:beforeunload或onbeforeunload它们看起来做的事情非常相似,但浏览器兼容性不同 某些上下文: 我有一张表格。在页面加载时,我序列化表单并将其保存在变量中。如果用户离开页面,我将序列化表单并比较两者,以查看是否有任何更改。但是,如果表单已提交,则不应触发事件 示例1 我让它按预期工作。我只是不明白两者之间的区别: window.onbeforeunload = function(e) { if(strOnloadForm != strUnl
beforeunload
或onbeforeunload
它们看起来做的事情非常相似,但浏览器兼容性不同
某些上下文:
我有一张表格。在页面加载时,我序列化表单并将其保存在变量中。如果用户离开页面,我将序列化表单并比较两者,以查看是否有任何更改。但是,如果表单已提交,则不应触发事件
示例1
我让它按预期工作。我只是不明白两者之间的区别:
window.onbeforeunload = function(e) {
if(strOnloadForm != strUnloadForm)
return "You have unsaved changes.";
}
保存表单时,使用此行停止它的触发(绑定到.submit()
)
示例2
window.addEventListener("beforeunload", function( event ) {
if(strOnloadForm != strUnloadForm)
event.returnValue = "You have unsaved changes.";
});
保存表单时,使用此行停止它的触发(绑定到.submit()
)
文档说明的内容
我已经阅读了和的文档。
在onbeforeuload
部分下,它指出:
您可以并且应该通过和事件处理此事件。这里有更多的文档
这让我觉得我应该使用后者。但是,该文件说明:
addEventListener()
和removeEventListener()
在旧浏览器中不存在。您可以通过在脚本开头插入以下代码来解决此问题,允许在本机不支持的实现中使用addEventListener()
和removeEventListener()
有人能解释一下它们之间的区别吗?请告诉我最好用哪一种
一,
2
window.onbeforeunload=function(){/**/}
将覆盖任何现有的处理程序,并将其替换为您自己的处理程序
window.addEventListener(“beforeunload”,function(){/**/})代码>将添加一个新的处理程序
addEventListener
是首选。在较旧的浏览器中(即:IE6或IE7),您可以使用attachEvent
您通常会看到如下代码:
function addEvent(object, event_type, event_handler) {
if (object.addEventListener) {
object.addEventListener(event_type, event_handler, false);
} else {
object.attachEvent("on" + event_type, handler);
}
}
这是完全相同的事件,但当使用addEventListener时,您总是保留“开”部分。谢谢,这很有意义,实际上只是触发相同事件的另一种方式。好的,谢谢。如果知道,onbeforeunload
将覆盖任何处理程序,而使用addEventListener
则会添加一个处理程序,这是非常合理的。
window.removeEventListener("beforeunload");
function addEvent(object, event_type, event_handler) {
if (object.addEventListener) {
object.addEventListener(event_type, event_handler, false);
} else {
object.attachEvent("on" + event_type, handler);
}
}