我使用以下教程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行“数据:否]
答案 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
的引用;你需要一个内容脚本来与它进行交互。