2012-06-28 159 views
2

我有以下代碼替代品,這兩個都不令人滿意。我正在使用jQuery 1.7.2jquery卸載/綁定可靠的跨瀏覽器解決方案

第一個在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 
+0

我不認爲'unload'和'beforeunload'事件是由所有的瀏覽器都支持。 –

+0

將不得不是一個同步呼叫或將通過beforeunload返回中止 – charlietfl

+0

我想要做的是捕獲滾動的最大距離。每次嘗試發佈jQuery(window).scroll觸發時都會遇到問題,而且效率非常低,因此任何發出信號的用戶都將離開頁面。 –

回答

1

只是不要每次都發佈一個jQuery(window).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/

相關問題