如何在Firefox Webextension中获取弹出窗口

时间:2015-12-03 17:35:47

标签: firefox google-chrome-extension firefox-addon

我使用以下教程https://hacks.mozilla.org/2015/10/porting-chrome-extensions-to-firefox-with-webextensions/将chrome webextension移植到firefox。

我设法在Firefox中安装了插件,但与我的chrome对应物不同,我无法打开弹出窗口。

在chrome中,通过我的清单调用的JS文件具有以下代码行

chrome.browserAction.onClicked.addListener(function(tab){
  createPopup(tab.url)
})

function createPopup(url) {
    new_window = window.open('https://www.myurl.com?external=true&share_url='+url,'My site','height=600px,width=600px');
}

这很好用并弹出我需要的窗口,但是当我在firefox中运行它时,我收到以下错误:

[例外......“失败”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS frame :: moz-extension://282abc47-9416-3a4e-a2f6-f090514fbabc/popup.js :: createPopup ::第7行“数据:否]

2 个答案:

答案 0 :(得分:2)

您可能遇到过这个错误:window.open() failing when invoked from a background page。该错误建议使用特定于扩展的API来打开窗口作为解决方法。

答案 1 :(得分:0)

由于我显然志愿,这里有一个特定于扩展程序的代码示例,但不会遇到此问题:

function createPopup(url) {
    chrome.windows.create({
        url: 'https://www.myurl.com?external=true&share_url='+url,'My site',
        width: 600,
        height: 600,
        type: 'popup'
    });
}

function createTab(url) { // Just in case you want a tab, not a separate window
    chrome.tabs.create({
        url: 'https://www.myurl.com?external=true&share_url='+url
    });
}

请注意,您无法获得对新打开的文档window的引用;你需要一个内容脚本来与它进行交互。