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

이것은 물론, 장난감 예입니다

다음은 간단한 예입니다. 일부 구현 세부 사항에 대한 추가 읽기 :

관련 문제