通过Firefox扩展打开特定位置的选项卡

时间:2016-03-07 18:47:07

标签: firefox firefox-addon

说,Firefox浏览器窗口中有10个选项卡。

如何通过Firefox扩展代码在第二个标签页后添加标签?

gBrowser.addTab方法仅附加到标签列表。

1 个答案:

答案 0 :(得分:3)

没有简单的直接方式来做你想做的事。如果确实想要在特定索引处直接打开选项卡,那么您可以查看code for gBrowser.addTab()和{{3 }} code for;复制它们并修改它们以做你想要的。请注意,此代码是JavaScript的XML表示形式。因此,如果你想使用它,你需要重新格式化它。

但是, easy 方法是打开标签gBrowser.addTab()。然后,将其移动到您想要的索引gBrowser.moveTabTo()

以下代码将执行您想要的操作。当我将此代码附加到按钮时,该选项卡在视觉上似乎在指定的索引处打开。它首先在选项卡的末尾打开,然后显示为移动。在执行此操作之间没有用户明显区别,添加然后移动,而不是实际在指定索引处添加选项卡。

function handleButtonCommandEvent(event) {
    let window = event.view;

    //Create the window variable if it does not exist. It should
    //  already be defined from event.view.
    //  This should work from any Firefox context.
    if (typeof window === "undefined") {
        //If there is no window defined, get the most recent.
        var window=Components.classes["@mozilla.org/appshell/window-mediator;1"]
                             .getService(Components.interfaces.nsIWindowMediator)
                             .getMostRecentWindow("navigator:browser");
    }

    //Test addTabAtIndex()
    addTabAtIndexInWindow(window, 2, "http://www.ebay.com/")
}

/**
 * Open a tab in specified window at index.
 */
function addTabAtIndexInWindow(window, index, URL, referrerURI, charset, postData,
                       owner, allowThirdPartyFixup ) {

    //Get the  gBrowser for the specified window
    let winGBrowser = window.gBrowser;

    //Open a new tab:
    let newTab = winGBrowser.addTab(URL, referrerURI, charset, postData,
                                    owner, allowThirdPartyFixup );
    //Immediately move it to the index desired:
    winGBrowser.moveTabTo(newTab,index);

}