检测何时取消另存为对话框
Detect when saveAs dialog is canceled
按照此处的文档操作:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/downloads/download
var options = {
filename: 'dummyName.txt',
url: 'https://some.url',
conflictAction: 'uniquify',
saveAs: true
};
var downloading = browser.downloads.download(options, function() {
console.log('In callback');
});
console.log(downloading);
downloading.then(function() {
console.log('started');
}, function() {
console.log('failed');
});
在控制台中,我看到..
undefined
downloading is undefined
In callback
Unchecked lastError value: Error: Download canceled by the user
如果用户在对话框中取消保存,我如何防止 downloading.then
中的代码进入 运行?
其实很简单。只需从下载函数中删除 function() 部分,如下所示:
var options = {
filename: 'dummyName.txt',
url: 'https://some.url',
conflictAction: 'uniquify',
saveAs: true
};
var downloading = browser.downloads.download(options);
console.log("downloading object is " + downloading);
downloading.then(function(id) {
console.log('started' + id);
}, function(error) {
if(error.message == "Download canceled by the user"){
// Do something
console.log("not going into the success callback..");
}else{
console.log('failed' + error);
}
});
您混淆了回调语法(您包含的 function() 在下载调用中执行的操作)和基于 Promise 的语法 (then())。
如果你想正确地捕获错误,最好使用基于 Promise 的语法来开发 Firefox 插件。
请注意,您可以对此进行简化
var downloading = browser.downloads.download(options);
downloading.then(onSuccess, onError);
至
browser.downloads.download(options).then(onSuccess, onError);
祝 Firefox 插件开发顺利!
按照此处的文档操作:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/downloads/download
var options = {
filename: 'dummyName.txt',
url: 'https://some.url',
conflictAction: 'uniquify',
saveAs: true
};
var downloading = browser.downloads.download(options, function() {
console.log('In callback');
});
console.log(downloading);
downloading.then(function() {
console.log('started');
}, function() {
console.log('failed');
});
在控制台中,我看到..
undefined
downloading is undefined
In callback
Unchecked lastError value: Error: Download canceled by the user
如果用户在对话框中取消保存,我如何防止 downloading.then
中的代码进入 运行?
其实很简单。只需从下载函数中删除 function() 部分,如下所示:
var options = {
filename: 'dummyName.txt',
url: 'https://some.url',
conflictAction: 'uniquify',
saveAs: true
};
var downloading = browser.downloads.download(options);
console.log("downloading object is " + downloading);
downloading.then(function(id) {
console.log('started' + id);
}, function(error) {
if(error.message == "Download canceled by the user"){
// Do something
console.log("not going into the success callback..");
}else{
console.log('failed' + error);
}
});
您混淆了回调语法(您包含的 function() 在下载调用中执行的操作)和基于 Promise 的语法 (then())。
如果你想正确地捕获错误,最好使用基于 Promise 的语法来开发 Firefox 插件。
请注意,您可以对此进行简化
var downloading = browser.downloads.download(options);
downloading.then(onSuccess, onError);
至
browser.downloads.download(options).then(onSuccess, onError);
祝 Firefox 插件开发顺利!