gpt4 book ai didi

javascript - 如果用户中断页面加载如何处理?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:06:02 25 4
gpt4 key购买 nike

在我的扩展中,我依赖于 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);

当然,这只是一个玩具示例。进一步阅读一些实现细节:

关于javascript - 如果用户中断页面加载如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com