我正在开发Chrome扩展程序,我正在寻找如何(从后台页面)查看弹出页面是否打开。我调查了message passing,但我不确定这是否会对我有所帮助,或者是否有更简单的方法。
谢谢!
答案 0 :(得分:12)
如果弹出视图已打开,您可以在后台页面提取中使用以下chrome API调用:
var views = chrome.extension.getViews({ type: "popup" });
//views => [] //popup is closed
//views => [DOMWindow] //popup is open
如果它返回一个空数组,那么你的弹出窗口没有打开,如果它返回一个包含弹出窗口DOMWindow对象的数组,那么你的弹出窗口就会打开。
如果你在一个插件中有多个弹出窗口,那么你可以检查返回的DOMWindow中是否存在一些全局变量来消除歧义。
答案 1 :(得分:0)
替代方法:
extension.getViews({ type: "popup" })
在移动设备上不起作用,因为弹出窗口实际上不是弹出窗口。
解决方法是,可以在弹出窗口的文档中设置变量(例如document.title),然后在后台页面中测试其值。
例如,在弹出窗口的HTML代码中:
<title>My awesome extension</title>
在background.js
中:
if (document.title == "My awesome extension") {