【问题标题】:Correct way to use before unload event on Internet Explorer? [duplicate]在 Internet Explorer 上卸载事件之前使用的正确方法? [复制]
【发布时间】: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 事件或警报事件。只是为了验证该功能是否正常工作。然后,您需要添加更复杂的代码,例如示例中的帖子。

标签: javascript jquery


【解决方案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.onbeforeunload
Duplicate issue on stackoverflow
Duplicate issue on stackoverflow 2
Duplicate issue on stackoverflow 3

【讨论】:

  • 添加了参考链接以帮助您。
猜你喜欢
  • 2010-09-09
  • 2017-06-14
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2015-12-31
相关资源
最近更新 更多