因此,我遇到了一种情况,每次单击浏览器扩展图标时,我都希望运行背景和内容脚本。理想的行为是单击扩展图标,运行脚本,然后弹出窗口将打开,显示脚本获取的数据(但这应该很快发生,脚本运行并获取数据的速度非常快)。由于如果 manifest.json 中定义了 default_popup,chrome.pageAction.onClicked 将不起作用,我认为这给我留下了两个选择:
第二种方法可行吗?第一种方法可以以某种方式工作吗?
答案 0 :(得分:0)
您的选项 #1 是正确的,我认为当用户第一次看到弹出窗口时,需要的只是一个加载屏幕,并添加一些代码,在收到后端消息后立即更新弹出窗口。可能需要查看一些代码才能更好地提供帮助。
选项#2 不会真正起作用,除非您在新选项卡中打开弹出窗口(或者只是将其设为一个全新的 HTML 页面)。我之所以这么说是因为 Chrome 开发团队在此有一条说明,他们不支持打开弹出窗口,除非它来自用户手势 -- https://stackoverflow.com/a/10484764/4875295。
如果你想走那条路,它可能看起来像:
browser_action.default_popup
chrome.browserAction.onClicked.addListener(() => {
const data = dataMaker();
chrome.tabs.create({
url: `${chrome.runtime.getURL("app.html")}?data=${data}`
});
});
不过,这与您要求的方法不同,我认为您的原始路线可能仍然是最好的选择(在加载时添加了一些 JS)。