一种使onDeminminingFileName和NativeMessaging协同工作的方法

时间:2017-03-31 14:57:43

标签: google-chrome-extension

在下载之前,我正在尝试确定文件是否已存在于我的系统中。 我通过

从服务器获取文件名
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中取消。有没有办法做到这一点,或者我只是停止通知该文件已经存在并手动关闭保存对话框?

0 个答案:

没有答案