javascript - 在多进程 Firefox 中打开新选项卡?

标签 javascript firefox firefox-addon e10s

我正在尝试将现有的 Firefox 插件代码移植到新的多进程架构。在我现有的代码中,我可以使用以下代码在插件安装事件上启动一个新选项卡:

function install(data, aReason) {
    if (aReason == ADDON_INSTALL) {
        var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
            .getService(Components.interfaces.nsIWindowMediator);
        var mainWindow = wm.getMostRecentWindow("navigator:browser");
        mainWindow.gBrowser.addTab('http://www.mywebsite.org/install-success-page.html');

    }

    if (aReason == ADDON_UPGRADE) {

        var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
            .getService(Components.interfaces.nsIWindowMediator);
        var mainWindow = wm.getMostRecentWindow("navigator:browser");
        mainWindow.gBrowser.addTab('http://www.mywebsite.org/update-success-page.html');
    }

}

对 bootstrap.js 进行更改以兼容 multiprocess firefox 后(使用其他扩展代码的帮助),插件按预期加载和运行,但上述代码无法加载新选项卡,并且没有错误显示在控制台中!!!

最佳答案

这应该有效:

var Cu = Components.utils;
var { require } = Cu.import(resource://gre/modules/Services.jsm", {});
const tabs = require("sdk/tabs");
tabs.open(url);

此外,与任何平台代码相比,这在未来不太可能被破坏。

关于javascript - 在多进程 Firefox 中打开新选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29863810/

相关文章:

javascript - Bug 修复被遗弃的 Firefox 附加组件、Wikilook?

Selenium 2.50 不适用于 Firefox 45

firefox - Firefox Developer Edition 中的 pretty-print 缩小 CSS 文件

javascript - Digg 如何从其搜索结果 URL 中删除 "&x=0&y=0"?

javascript - 如何在打开 Chrome 扩展后停止它?

javascript - 将数据从 executeAsync 返回到调用函数 (javascript/mozilla)

javascript - 在内容脚本和主附加脚本之间传递 RegExp 对象

javascript - chrome.webNavigation.onCompleted 在完成之前触发?

javascript - 将日期从客户端(Javascript)发送到 WebApi 的最佳方式是什么

javascript - 单击触发器时打开和关闭同级 div