2011-11-01 60 views

回答

3

一種可能性是使用nsIWebProgressListener來監視頁面加載事件的進度。當請求完成時,即使用戶中斷了頁面加載,onStateChange方法的執行狀態爲STATE_STOP

這裏有一個簡單的例子:

const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START; 
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP; 

window.addEventListener("load", function(e) { 
    gBrowser.addProgressListener({ 
     QueryInterface: function(aIID) { 
      if (aIID.equals(Components.interfaces.nsIWebProgressListener) || 
       aIID.equals(Components.interfaces.nsISupportsWeakReference) || 
       aIID.equals(Components.interfaces.nsISupports)) 
       return this; 
      throw Components.results.NS_NOINTERFACE; 
     }, 

     onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) { 
      if (aFlag & STATE_STOP) { 
       // load finished or was stopped 
       alert("stop"); 
      } 
     }, 

     onLocationChange: function(aProgress, aRequest, aURI) { }, 
     onProgressChange: function(aWebProgress, aRequest, curSelf, maxSelf, curTot, maxTot) { }, 
     onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage) { }, 
     onSecurityChange: function(aWebProgress, aRequest, aState) { } 
    }); 
}, false); 

這當然是一個玩具例子。在一些實施細節延伸閱讀:

相關問題