我想做的是修改从persist.saveDocument()下载的HTML文件。这意味着,我必须知道何时成功下载了文件。所以我需要在persist.progressListener中实现一个nsIWebProgressListener。
这是我的代码:
persist.progressListener = {
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) {
},
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) {
if(aStateFlags & stop) {
alert("file has been downloaded");
}
}
}
问题是,警报功能执行了无数次(甚至有时我不得不强制关闭浏览器),而不是仅仅执行一次。有谁知道如何只执行一次警报?
最佳答案
解决了。我在if语句中添加了布尔变量,因此代码如下所示:
persist.progressListener = {
abc : true,
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) {
},
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) {
if((aStateFlags & stop) && abc == true) {
this.abc = false;
alert("file has been downloaded");
}
}
}
重复执行警报功能的原因是因为(aStateFlags&stop)几乎总是返回“真实的”值(非0的值),因此我添加了一个布尔变量来强制条件导致错误(真实和错误会导致错误)。
关于javascript - 使用persist.progressListener遇到麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25379406/