使用“nsIWebBrowserPersist saveURI”或Firefox扩展中的其他内容重新启动下载
Restart download using `nsIWebBrowserPersist saveURI` or something else in a Firefox extension?
Mozzila提供了使用nsIWebBrowserPersist saveURI
从Firefox扩展下载文件的示例代码。
然而,它没有说明如何监控下载是否停止并需要重新启动。
有没有办法检查下载是否停止并重新启动下载?如果我不能用nsIWebBrowserPersist
,我可以用其他东西吗?
您需要实现和nsIWebProgressListener
和.progressListener
。
侦听器必须实现所有nsIWebProgressListener
方法,但您可以截取其中的大部分方法。(对于这个问题)重要的一个是onStateChange
,您可以在其中检查指示网络错误的错误结果,并且,正如文档所述,还可以检查返回http错误的服务器:
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
var mylistener = {
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIWebProgressListener]),
...
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) {
if (!(aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP)) {
// not yet done.
}
aWebProgress.progressListener = null; // reset to avoid circular references -> leaks
if (!Components.isSuccessCode(aStatus)) {
// Some network or file related error happened.
}
if (aRequest instanceof Components.interfaces.nsIHttpChannel && aRequest.responseStatus >= 400) {
// Some http related error happened.
}
}
};
Downloads.jsm支持恢复下载。在下载对象上设置tryToKeepPartialData。
相关文章:
- 如何在生成下载文件时显示加载动画
- 直接下载文件,而不是从window.open(url)
- 如何添加浮动和非浮动,其他
- 如何使用javascript或html下载PDF格式的填写表单
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 使用“nsIWebBrowserPersist saveURI”或Firefox扩展中的其他内容重新启动下载
- 正在运行的脚本标记是否会阻止其他脚本标记的下载
- AJAX 下载大文件并发布到其他域
- 将来自其他网站的文件作为下载呈现
- 张贴表格,然后下载其他网页
- 如何从其他网站下载mp3文件
- 通过脚本或其他方式下载文件
- 在页面上的其他几个图像下载完成后,HTML视频开始下载
- Node.js强制从其他服务器下载
- IE无法加载JSON并尝试下载根文件!(我正在遵循一个适用于所有其他浏览器的教程)
- Javascript -下载其他js并使用它
- Chrome无法下载,但其他浏览器可以.mp4上的HTML链接
- 强制下载其他服务器上的文件
- 使用AJAX下载其他页面