2012-05-04 66 views
0

我無法使用XUL 7.0中的setTimeout()函數,它不起作用。setTimeout在XUL中不起作用7

在關閉XUL窗口時,我創建了一個如下所示的事件偵聽器。

window.addEventListener("close",function(event) { 
  
  try 
  { 
  setTimeout(function() { alert("bip"); }, 2000); 
    
  } 
  catch(e) 
  { 
   //alert(e.message); 
  } 
 },false); 
  

但警報沒有到來。

任何幫助將不勝感激!

+1

嘗試綁定「onbeforeunload」事件,而不是......但實際上,如果您在關閉事件中執行了2秒的超時,則無法期望它被觸發(您無法期望窗口在關閉事件後生存2秒) –

+0

通過「XUL 7.0」,您可能是指Firefox 7.0中的XUL?還是XULRunner 7.0? –

+0

對不起, 司馬:即使我給10秒也沒有按預期工作 弗拉基米爾:這是XULRunner 7.0 – Naresh

回答

3

setTimeout不會阻塞。該功能將結束,窗口將關閉,兩秒鐘後計時器將耗盡。在那個階段,執行環境將消失(當窗口關閉時),所以什麼都不會發生。

+0

它甚至不會運行 - 關閉窗口會殺死所有與其關聯的超時。但原因是一樣的,這些超時的情況已經消失。 –

+0

得到了解決方案。 如果我們只是保持setTimeout()在關閉函數,它不是關閉 而是我使用了preventDefault(),它使關閉函數不關閉並執行我的操作,然後使用currentWinObj.close()關閉XUL窗口。 ' window.addEventListener( 「關閉」,函數(事件){ 嘗試 { 的preventDefault(); 的setTimeout(函數(){警報( 「BIP」);},2000); window.close( );} 趕上 (E) { //alert(e.message);} } ,FALSE);' 謝謝所有您的幫助! :) – Naresh