在下载之前,我正在尝试确定文件是否已存在于我的系统中。 我通过
从服务器获取文件名chrome.downloads.onDeterminingFilename.addListener(function (item, suggest) {
var message = { "fileName": item.filename, "directory": directory };
suggest({
filename: item.filename,
conflict_action: 'prompt',
conflictAction: 'prompt'
});
// conflict_action was renamed to conflictAction in
// https://chromium.googlesource.com/chromium/src/+/f1d784d6938b8fe8e0d257e41b26341992c2552c
// which was first picked up in branch 1580.
});
效果很好。
我正在通过本机消息检查文件名。
chrome.runtime.sendNativeMessage("testcsharp", message, function (response) {
if (chrome.runtime.lastError) {
alert("ERROR: " + chrome.runtime.lastError.message);
} else {
isDownloaded = JSON.parse(JSON.stringify(response)).data;
}
});
问题是它们都是异步的,但如果我的文件已经存在,我需要避免另存为对话框,我发现这样做的唯一方法是调用chrome.downloads.cancel(item.id)但是有无法保证响应将从本机消息传递到ondeterminingfilename中取消。有没有办法做到这一点,或者我只是停止通知该文件已经存在并手动关闭保存对话框?