再次单击浏览器操作图标,关闭Chrome扩展程序弹出窗口

时间:2012-11-03 07:45:57

标签: javascript google-chrome google-chrome-extension popup

我正在开发Chrome扩展程序,我想知道是否可以通过再次单击允许您打开弹出窗口的图标来关闭弹出窗口:我尝试过任何操作,但看起来您必须单击其他位置才能关闭它。文档声明onClicked事件是:

单击浏览器操作图标时触发。如果浏览器操作有弹出窗口http://developer.chrome.com/extensions/browserAction.html#popups),则不会触发此事件。

提前致谢。

[更新] 我尝试了以下内容,它的一半(!)有效: 1.在popup.html中我链接popup.js; 2. popup.js读取background.js中包含的变量的值;

var currentStatus = chrome.extension.getBackgroundPage().open;
if(currentStatus==0){
  chrome.extension.getBackgroundPage().open=1;
}else{
  chrome.extension.getBackgroundPage().open=0;
  window.close();
}

会发生什么:第一次点击打开应用程序,第二次关闭它,但它仍然是一个微型弹出窗口,图标上没有内容。如果我删除它,我就达到了目标。

2 个答案:

答案 0 :(得分:3)

如果您的扩展程序的浏览器操作未在清单中定义onClicked,则会调用default_popup事件。文档中的说明不是关于弹出窗口当前是否打开。

如果清单定义default_popup,则再次单击该按钮将关闭并重新打开该插件。 mousedown关闭,鼠标打开。 (因此,单击按钮并拖动并释放鼠标会关闭弹出窗口,而不是任何人都应该这样做。)

我建议设置default_popup并在html中设置一个按钮,用于弹出关闭弹出窗口window.close;的弹出窗口,或者在弹出窗口的用例中找到一个关闭有意义的点。

答案 1 :(得分:1)

好吧已经很长时间了,问题/错误仍然存​​在于Chrome浏览器上。我找到了一个解决方法,它并不好,但它可以满足我的需求 - 在第二个图标点击时关闭窗口。这是我在弹出的javascript文件中所做的:

if(localStorage.getItem('firstClick')==='true'){
    localStorage.setItem('firstClick', 'false');
    window.close();
}
else {
    localStorage.removeItem('firstClick');
    localStorage.set('firstClick', 'true')
}
相关问题