jquery unload / bind可靠的跨浏览器解决方案

时间:2012-06-28 04:45:16

标签: jquery bind

我有以下代码替代品,两者都不令人满意。我正在使用jQuery 1.7.2

第一个在Firefox中是完美的,但在IE9中它发布但不完成写入数据库的操作。我试图让ASYNC错误,正如其他人所建议的那样,但奇怪的是,似乎并没有任何区别。它也可能在其他浏览器中不起作用。

第二个确实完成但弹出确认关闭页面对话框。我已经看到了关于如何阻止它的建议,但我无法达到相同的结果。

有人能为我提供替代方案吗?或者给我正确的ASYNC假代码,适用于第一个IE9?或者告诉我如何正确阻止确认关闭?

// Sends the post but does not complete the post in IE9
jQuery(window).unload(function() {
jQuery.post(
    MyAjax.ajaxurl, etc

// works in IE 9 but throws up a confirm dialog box
jQuery(window).bind("beforeunload", function() { ...
jQuery.post(
    MyAjax.ajaxurl, etc

1 个答案:

答案 0 :(得分:1)

每次触发jQuery(窗口).scroll时都不要发帖。仅在用户停止滚动时发布。像这样:

function sendQuery() {
    console.log('scrolled');
}

var scrollTimeout = null;
$(window).bind('scroll', function() {
    if (window.scrollTimeout) {
        clearTimeout(window.scrollTimeout);
    }
    window.scrollTimeout = setTimeout(sendQuery, 200);
})

一个实例 - http://jsfiddle.net/AJnk4/