2011-11-02 79 views
0

我使用此代碼對數據庫進行更新,而孩子的瀏覽器窗口關閉呼叫而孩子的瀏覽器窗口關閉

window.onbeforeunload = check; 
    function check(){ 

      var url = 'chat_update.php?chatId='+<?php echo $_GET['chatId'];?>; 
      if(window.XMLHttpRequest){ 
       xmlhttp = new XMLHttpRequest(); 

      }else{ 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 

      } 
      xmlhttp.open("GET",url + Math.random(),false); 
      xmlhttp.send(); 

      return false; 
    } 

它工作正常,但檢查()函數仍然調用時,孩子的瀏覽器窗口刷新AJAX功能。僅在子窗口關閉時調用該函數的任何解決方案?

回答

0

無法確定窗口是否正在關閉或刷新(請參閱the docs,特別是要調用部分)。但是從主窗口內,您可以檢查,如果子窗口關閉,onbeforeunload事件觸發後(我假設您在主窗口中有對您的子窗口的引用)。

// in main windows js 
child.onbeforeunload = function() { 
    window.setTimeout(function() { 
     if(child.closed) { 
      // Perform your ajax here 
     } 
    }, 500); 
} 
+0

我把它放在父窗口中,如果我們關閉父窗口,它只會觸發一次。它需要在子窗口關閉時觸發事件。任何其他方式來做到這一點? – LearneR

0

請注意 - onbeforeunload不支持歌劇,嘗試使用onunload

相關問題