javascript – beforeunload或onbeforeunload

我被困在这些我应该使用哪一个:beforeunload或onbeforeunload他们似乎在做非常相似的事情,但具有不同的浏览器兼容性.

一些上下文:

我有一张表格在页面加载时,我将表单序列化并保存在变量中.如果用户离开页面,我将该表单序列化并比较两者,以查看是否有任何更改.但是,如果表单被提交,则不应该触发该事件.

实施例1

我有这样工作的预期.我只是不明白两者之间的区别:

window.onbeforeunload = function(e) {
    if(strOnloadForm != strUnloadForm)
        return "You have unsaved changes.";
}

当您保存表单(绑定到.submit())时,此行停止触发

window.onbeforeunload = null;

示例2

window.addEventListener("beforeunload",function( event ) {
    if(strOnloadForm != strUnloadForm)
        event.returnValue = "You have unsaved changes.";
});

当您保存表单(绑定到.submit())时,此行停止触发

window.removeEventListener("beforeunload");

文件说明了什么

我已经阅读了onbeforeunloadbeforeunload的文档.
在它之前说

You can and should handle this event through window.addEventListener() and the beforeunload event. More documentation is available there.

这让我觉得我应该使用后者.不过removeEventHandler的文档说:

addEventListener() and removeEventListener() are not present in older browsers. You can work around this by inserting the following code at the beginning of your scripts,allowing use of addEventListener() and removeEventListener() in implementations which do not natively support it.

有人可以请大家谈谈这些请求的差异,最好使用一下吗?

解决方法

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);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)