javascript - 建议在 Chrome Ext 中异步下载文件名

标签 javascript google-chrome-extension

我正在编写我的第一个简单的 Chrome 扩展,它应该根据下载它们的标签的标题将下载组织到子文件夹中。我计划在未来扩展它,但目前我什至无法使用这个简单的功能。问题似乎是无法从异步选项卡查询中调用“文件名建议”功能。以下代码为后台JavaScript文件的全部内容:

chrome.downloads.onDeterminingFilename.addListener(function (item, __suggest) {

    //Find active tab
    chrome.tabs.query({ active: true }, function (tabs) {
        var activeTab = tabs[0];

        //Generate filepath
        var filepath = activeTab.title + "/" + item.filename;

        //TODO: Sanitize filepath.

        //Suggest filename for this download.
        __suggest({ filename: filepath });
    })

});  

控制台记录的错误是:

suggestCallback may not be called more than once. (extensions::downloads:42)

我检查过 suggest 函数(在我的 JS 中)确实只被调用了一次。我有什么想法可以解决/解决这个问题吗?

最佳答案

作为the documentation说:

If the listener calls suggest asynchronously, then it must return true.

因此您需要在调用chrome.tabs.query 之后添加return true

关于javascript - 建议在 Chrome Ext 中异步下载文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746290/

相关文章:

javascript - 如何在使用 ng-options 创建的 html 下拉列表中设置默认值

php - 将ajax变量写入txt文件

javascript - Chrome 扩展程序注入(inject) Javascript 按钮更改页面

javascript - 每次加载页面时,如何从后台向 Chrome 扩展程序中的弹出窗口发送消息?

javascript - 如何打开包含浏览器信息的页面?

javascript - 使用 chrome.experimental.webRequest API 更改加载的文件?

javascript - 在 Karma/Jasmine 单元测试中注入(inject) Angular 的 $timeout 服务的实际实现

javascript - 禁用调试时,使用捆绑缩小的脚本在 ASP.NET MVC 3 中不起作用

javascript - Find() 函数返回未定义 - Mongoose 和 Node.js

javascript - 插件/扩展有什么额外的功能?