【发布时间】:2018-07-22 06:33:12
【问题描述】:
我目前正在编写一个 Firefox 扩展程序,它会在我的后台脚本中打开一个新窗口。当用户单击页面上的按钮时,后台脚本会执行并打开窗口。
到目前为止,我有:
// content script
downloadMod(linkToOpen); //button clicked
function downloadMod(url) {
// var test = window.open(url, '_blank');
var myPort = browser.runtime.connect({ name: "cac410c4672fff93bf0d3186636d8876de3dfeb6@temporary-addon"});
myPort.postMessage({ greeting: url });
}
在我的后台脚本中(上面的代码也连接的脚本)我有:
//background script
portFromCS.onMessage.addListener(function (m) {
var test = browser.windows.create({
url: m.greeting,
allowScriptsToClose: true,
});
注意:所有代码都按预期工作。然而,当关闭窗口时,麻烦就来了。
我尝试过 self.close()、window.close() 的变体。我什至创建了一个函数来等待 5 秒加载新创建的窗口,然后关闭页面无济于事。我所有的尝试都返回错误:
脚本不能关闭不是由脚本打开的窗口。
我认为应该使用 allowScriptsToClose 标志删除此错误?
【问题讨论】:
-
只有用window.open()打开的窗口才能通过JS关闭。
-
@marekful 这很奇怪。所以我只是尝试了 window.open(url) 的方式,不幸的是我的浏览器中没有打开任何窗口。
-
现代浏览器默认会阻止弹出窗口。
标签: javascript html firefox firefox-addon firefox-addon-webextensions