我正在构建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" 中调用一个函数EM>。然后" 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时,它实际上不能作为扩展的后台页面。
非常感谢帮助, 感谢