如何确定弹出页面是否打开?

时间:2012-01-19 04:17:14

标签: javascript google-chrome-extension

我正在开发Chrome扩展程序,我正在寻找如何(从后台页面)查看弹出页面是否打开。我调查了message passing,但我不确定这是否会对我有所帮助,或者是否有更简单的方法。

谢谢!

2 个答案:

答案 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") {