javascript - 从 boostraped 扩展创建新选项卡

标签 javascript firefox firefox-addon

我在 Firefox 的引导扩展中创建新选项卡时遇到一些问题。到目前为止,我有一个扩展,它为上下文菜单绘制了一些按钮,可以在单击时使用 windows.open() 打开模式窗口,如下所示:

        var contextMenu = document.getElementById("contentAreaContextMenu");

        var menuItemWebsite = document.createElement("menuitem");
        menuItemWebsite.setAttribute("id", "dev-website");
        menuItemWebsite.setAttribute("label", "Go to website");

        contextMenu.appendChild(menuItemWebsite);
        menuItemWebsite.addEventListener("command", function() {
          window.open(...);
        }, false);

网络上关于无需重新启动扩展的资源很少。谁能提供一个打开指定 URL 的新选项卡的示例?

最佳答案

您需要先获得一个窗口,然后才能在其中打开新选项卡。

这里的示例获取最新的导航器窗口并向其添加一个选项卡:

const {classes: Cc, Constructor: CC, interfaces: Ci, utils: Cu, results: Cr, manager: Cm} = Components;
Cu.import('resource://gre/modules/Services.jsm');
var aDOMWindow = Services.wm.getMostRecentWindow('navigator:browser');
aDOMWindow.BrowserOpenTab()

另一种方法是使用 gBrowser.loadOneTab: 所以:

aDOMWindow.gBrowser.loadOneTab(aDOMWindow.BROWSER_NEW_TAB_URL, {relatedToCurrent:true});

这将打开当前焦点选项卡旁边的选项卡。 更多信息请点击:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/loadOneTab

还有以下其他有用的功能: OpenBrowserWindow

关于javascript - 从 boostraped 扩展创建新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23447130/

相关文章:

Java jks keystore with CA, intermediate and website cert on tomcat in docker on AWS gives "Peer' s Certificate issuer is not recognised"

javascript - Jquery - 无法在 Chrome 中自动插入破折号,即克隆后

c++ - 有人如何使用第三方库将其包含在 Firefox 插件/扩展中?

javascript - 为什么我无法将对象添加到数组中? [javascript]

javascript - 如何在 es6 类中执行 `var self = this`?

javascript - JQuery .animate() 仅适用于 Chrome

javascript - 页面加载时的插件和 html - 元素遍布各处的瞬间

javascript - 我如何在 typescript 中使用 firefox require 函数

javascript - SetTimeout 在执行一次函数后停止

javascript - 全日历重复事件排除