在 Internet Explorer 上卸载事件之前使用的正确方法? [复制]

Posted

技术标签:

【中文标题】在 Internet Explorer 上卸载事件之前使用的正确方法? [复制]【英文标题】:Correct way to use before unload event on Internet Explorer? [duplicate] 【发布时间】:2013-07-04 06:34:26 【问题描述】:

我试图在用户离开网站时在后台跟踪数据。这适用于 Firefox 和 chrome。但不适用于 Internet Explorer。在 Internet Explorer 上卸载事件之前使用的正确方法是什么?

$(window).bind('beforeunload', function () 
    $.post("track.php", 
        async: false,
        ip: ip,
        plansclick: plansclick,
    );
);

【问题讨论】:

您已确认在 IE 中没有触发 beforeunload 事件? 是的,我已验证。当您关闭选项卡/浏览器时,它不会发送数据。 我的意思是使用 console.log 事件或警报事件。只是为了验证该功能是否正常工作。然后,您需要添加更复杂的代码,例如示例中的帖子。 【参考方案1】:

似乎是beforeunload 事件的问题。这在jQuery.unload 上进行了描述,为

卸载事件的确切处理因浏览器版本而异。例如,某些版本的 Firefox 会在点击链接时触发该事件,但不会在窗口关闭时触发。在实际使用中,应在所有支持的浏览器上测试行为,并与专有的 beforeunload 事件进行对比。

beforeunloadunload可靠,但一定要直接赋值(不通过jQuery绑定),像这样:

window.onbeforeunload = function() /* do stuff */ ;

卸载事件本身并不是为了完成工作,只是清理对象......随着垃圾收集器越来越好,浏览器甚至没有理由触发卸载事件。

所以您可以尝试将您的代码转换为:

window.onbeforeunload = function () 
    $.post("track.php", 
        async: false,
        ip: ip,
        plansclick: plansclick,
    );
;

但是,任何浏览器似乎都无法保证此功能。

Possible Fix for jQuery.onbeforeunloadDuplicate issue on ***Duplicate issue on *** 2Duplicate issue on *** 3

【讨论】:

添加了参考链接以帮助您。

以上是关于在 Internet Explorer 上卸载事件之前使用的正确方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

onkeydown 和 onkeyup 事件在 Internet Explorer 8 上不起作用

在 Internet Explorer 中触发 window.resize 事件

如何让 Internet Explorer 模拟指针事件:无?

Internet Explorer 吞下事件

为啥在安装Windows Internet Explorer 7的时候,提示"此操作系统不支持Windows Internet Explorer 7.

事件源和 Internet Explorer