【问题标题】:How to get a popup window in a Firefox Webextension如何在 Firefox Web 扩展中获取弹出窗口
【发布时间】:2015-12-03 17:35:47
【问题描述】:

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

我设法在 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 框架 :: moz-extension://282abc47-9416-3a4e-a2f6-f090514fbabc/popup.js :: createPopup ::第 7 行”数据:无]

【问题讨论】:

  • 你在哪个版本的 Firefox 中运行这个?
  • 为了测试我的插件,我在夜间构建中运行它
  • 这是一种非常非扩展的方式来打开一个弹出窗口。好老的chrome.windows.create怎么了?也就是说,您在 Firefox 的不稳定版本中遇到了错误。我不确定您的问题是什么 - 如何解决它?

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


【解决方案1】:

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

【讨论】:

  • 如果您在chrome.windows.open 中包含一个单行示例会有所帮助。
  • 感谢您的志愿服务!
【解决方案2】:

显然我是自愿,下面是一个扩展特定代码的示例,它不会遇到这种情况:

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 的引用;你需要一个内容脚本来与之交互。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多