3

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

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

1 回答 1

2

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

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

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

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

unload 事件本身并不意味着要完成工作,只是清理对象......随着垃圾收集器变得越来越好,浏览器甚至没有理由触发 unload 事件。

因此,您可以尝试将代码转换为:

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

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

jQuery.onbeforeunload 的可能修复
stackoverflow 上的
重复问题 stackoverflow 2
上的重复问题 stackoverflow 3 上的重复问题

于 2013-07-04T06:51:01.757 回答