Chrome扩展程序:来自已打开窗口的消息内容脚本

时间:2018-01-01 17:21:18

标签: javascript google-chrome-extension

我正在构建Chrome扩展程序,在我的情况下,我需要" popup.html"有时会出现,有时会消失,而无需用户点击扩展程序的图标。我找到了this回答,这解释了您可以使用" window.open" 打开弹出页面。

对我来说这似乎是一个很好的解决方案,特别是因为我不想打开" popup.html"在新标签中。它必须 当前标签,我将简单地使用它的可见性。

问题是:打开" popup.html" 作为新窗口后,在" background.js"中使用以下命令:

window.open("popup.html", "extension_popup", "width=300,height=400,status=no,scrollbars=yes,resizable=no");

这确实使" popup.html" 按预期显示,我根本无法使用它向内容脚本发送消息。我的意思是什么?在" popup.html" 里面我有一些逻辑,当点击一个按钮时,会在" background.js" 。然后" background.js" 以这种方式向内容脚本发送消息:

chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {type: "doSomething"});
  })

问题是,没有任何反应并且消息已发送。 另一方面,当" popup.html"通过按下扩展程序图标以常规方式打开,消息执行传递给内容脚本,逻辑按预期工作。 仅在" popup.html"由" window.open"。

打开

我想要实现的目标是什么?我的猜测是" background.js"当我使用" window.open(..)"打开popup.html时,它实际上不能作为扩展的后台页面。

非常感谢帮助, 感谢

0 个答案:

没有答案