4
내 확장 기능에서 DOMContentLoaded 이벤트를 사용하고 있습니다. 이것은 잘 작동합니다. 그러나 사용자가 중간에 페이지로드를 취소하면 실패합니다. 내 확장 기능은 작동하지 않습니다. 나는 그것이 그것이 품위있게 여기에서 저하되기를 바란다. 그럼,이 사건을 처리하는 방법이 있습니까?사용자가 페이지로드를 중단하는 경우 처리 방법은 무엇입니까?
내 확장 기능에서 DOMContentLoaded 이벤트를 사용하고 있습니다. 이것은 잘 작동합니다. 그러나 사용자가 중간에 페이지로드를 취소하면 실패합니다. 내 확장 기능은 작동하지 않습니다. 나는 그것이 그것이 품위있게 여기에서 저하되기를 바란다. 그럼,이 사건을 처리하는 방법이 있습니까?사용자가 페이지로드를 중단하는 경우 처리 방법은 무엇입니까?
한 가지 가능한 방법은 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);
이것은 물론, 장난감 예입니다
다음은 간단한 예입니다. 일부 구현 세부 사항에 대한 추가 읽기 :