2011-11-01 78 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); 

这当然是一个玩具例子。在一些实施细节延伸阅读:

相关问题