【发布时间】:2022-01-23 05:15:46
【问题描述】:
Ⅰ.简介
我读了很多书,也尝试了各种使用chrome.downloads API 的方法。但是直到现在,我仍然无法找到使用chrome.downloads API 的方法。
the docs 的指示似乎对我没有多大帮助。所以我决定来这里询问并向大家介绍我面临的问题。我希望它可以帮助很多人。
我的项目使用清单版本 3。
这里是项目的 GitHub 链接:https://github.com/ATU8020/Use-API-chrome.downloads.git
Ⅱ.提出问题
用到了一些相关的概念:
- 服务人员
- 内容脚本
- 异步函数
- 同步功能
问题
我知道服务工作者需要同步函数。
监听器必须从页面开始同步注册。 LINK
不要异步注册监听器,因为它们不会被正确触发。 LINK
但是chrome.downloads.download API 返回一个Promise:
这让我很困惑。我还尝试了其他一些方法,例如使用内容脚本。但是在阅读文档后,我知道 API chrome.downloads 不能直接使用。
评论
这是我问题的症结所在。任何有建设性的 cmets 和有用的信息都会受到赞赏。
Ⅲ.更多信息
如果在文件 popup.js 中使用 API chrome.downloads 就可以了,那是什么意思?
我知道这可能是另一种解决方案。
但是,如果您想在单击contextMenu 时执行download 之类的操作,该怎么办?有可能吗?
【问题讨论】:
-
使用
onMessage/sendMessage在不同的上下文之间进行通信。例如,如果您在不支持.downloads的上下文中显示按钮,则使用消息传递与支持.downloads的上下文进行通信,然后使用该上下文进行实际下载。 -
@Ouroborus 问题是你说API
chrome.downloads可以使用的上下文是什么? -
扩展控制下的任何上下文。这通常是背景、弹出窗口和内容脚本。 (这不包括通过例如直接在页面中创建和插入脚本元素而注入页面的脚本。)请注意,许多用于扩展的函数返回承诺。您需要熟悉异步编程才能使用它们。
-
@Ouroborus "content-script" 当作为 API
chrome.scripting插入时在我的情况下也不起作用,我试过了。 -
是的,那是注入,而不是内容脚本。内容脚本在清单中声明并自动处理。
标签: javascript google-chrome-extension