重定向后自动关闭 Chrome 扩展弹出窗口

时间:2021-08-01 23:31:03

标签: javascript google-chrome-extension

我无法完全找到答案。

上下文

这个 chrome 扩展在点击快捷方式后向用户显示相关信息。在我的清单中:

...
  "browser_action": {
    "default_popup": "popup.html",
    "default_icon": {
      "16": "images/nightscout16.png",
      "32": "images/nightscout32.png",
      "48": "images/nightscout48.png",
      "128": "images/nightscout128.png"
    }
  },
  "commands": {
    "_execute_browser_action" : {
      "suggested_key": {
        "default": "Alt+Shift+S",
        "linux": "Alt+Shift+S",
        "windows": "Alt+Shift+S",
        "mac": "Alt+Shift+S"
      }
    }
  },
"manifest_version": 2
...

然后,在我的 popup.js 上,我有一个关闭窗口的计时器:

var timerPop = setTimeout(function () {
    window.close();
}, 5000);
...

效果很好!用户点击快捷方式,窗口出现,然后关闭。

在同一个弹出窗口中,有一个设置图标,一旦点击,用户就会看到一个新窗口,用户应该在其中输入一个 url。这是由 settings.js/.html/.css 控制的。在 popup.js 中,我使用以下方法在窗口之间切换:

document.getElementById("gearButton").addEventListener('click', onclick, false)
    function onclick () {
    document.getElementById("gearButton").blur();
    clearTimeout(timerPop);
    window.location.href = "settings/settings.html";
}

计时器“timerPop”被清除,因此它不会关闭(按预期)。一旦用户与设置窗口交互,他们就可以使用“后退按钮”返回(与上面的代码相同,但具有正确的元素名称等)。这也很好用。

window.location.href = "/../popup.html";

问题:

当我使用完设置窗口并点击后退按钮返回到 popup.html。定时器再次初始化,但是当它到达window.close()时,它无法关闭弹出窗口并抛出一个:

<块引用>

脚本只能关闭由它们打开的窗口。

虽然计时器(和 window.close())在我只打开弹出窗口时工作,但如果用户访问设置页面并返回弹出窗口,我希望计时器也关闭弹出窗口。

我也试过 self.close() 并得到相同的结果

请帮忙!

完整代码:https://github.com/alberto-bortoni/glucalarmChrome

0 个答案:

没有答案