2010-12-16 71 views
1

顯示警報()射擊時過早我有以下代碼:的setTimeout()在Chrome

t = setTimeout(function() { blah(); }, 900000); 

已經加載的頁面15分鐘後,基本上調用等等。但是,如果在某個點我顯示alert()或confirm(),那麼一旦它被解散,blah()就會因爲某種原因被執行。

據我所見,這隻發生在Safari/Chrome中。它不會發生在IE/Firefox中。

任何想法是怎麼回事,甚至更好,如何解決這個問題?

謝謝!
Daniel

+0

你確定''blah'是通過'setTimeout'設置的函數嗎?可能是它被稱爲別的地方。 – vsr 2010-12-16 19:14:57

+1

不會發生在我身上。也許創建一個小頁面,你可以重現這個錯誤,讓我們試試? – muratgu 2010-12-16 19:19:25

+0

注意你可以直接給setTimeout提供'blah'函數:'setTimeout(blah,900000)'。 – Dykam 2010-12-16 19:23:31

回答

0

您確定是因爲我跑了這個演示並且無法複製它。

「超時!」將在10秒後出現,點擊前面的方框進行測試。

http://jsfiddle.net/PFgaJ/

+0

我已經盡最大努力查看了這段代碼,但我找不到任何其他原因。當超時過期時,我顯示特定的對話框,並且當我關閉對話框時顯示對話框。我只是在這個函數中顯示這個對話框,並且該函數只能從setTimeout中調用,所以我無法找到另一個解釋。 – 2010-12-16 19:22:21

+0

@Daniel Magliola如果它不可重現,那麼它會很難,你有沒有嘗試在其他機器上的相同頁面排除本地問題? – Orbling 2010-12-16 20:21:58

1

這個問題還沒有被鉻團隊解決。

我發現,通過在clearTimeout和setTimeout之間引入一些延遲,可以解決問題。

// mouse event 
document.onmousemove = function(){ 
    clearTimeout(timeout); 
    debug("Idle Timer reinitialized"); // apparently this function introduces some delay. it just works. You may want to include another timer here like for 2-3 seconds. 
    timeout = setTimeout(logoutNow, systemTimeout); 
} 

希望它有幫助。

相關問題