1

如何打开新选项卡,并在其中创建一个新的 HTML 文档?最好使用旧的需要重新启动的 API,例如Components.classesComponents.interfaces东西,但任何可行的方式都可以。

4

1 回答 1

0

在我的一个附加组件中,我使用以下代码在选项卡或窗口中打开 URL:

/**
 * Open a URL in a window or a tab.
 */
 function openUrlInWindowOrTab(url, titleText, inWindow, makeTabActive) {
    // Default: in tab; tab not activated
    if(typeof (url) !== "string" ) {
        return;
    }//else
    //  Add/remove a "/" to comment/un-comment the code appropriate for your add-on type.
    /* Add-on SDK:
    let activeWindow = require('sdk/window/utils').getMostRecentBrowserWindow();
    //*/
    //* Overlay and bootstrap (from almost any context/scope):
    Components.utils.import("resource://gre/modules/Services.jsm"); //Services
    let activeWindow = Services.wm.getMostRecentWindow("navigator:browser");        
    //*/
    let gBrowser = activeWindow.gBrowser;

    if(inWindow) {
        // Set default title
        titleText = (typeof titleText === "string") ? titleText : "Opened by [Your add-on]";
        //Open a window
        return activeWindow.open(url, titleText);
    } else {
        //Open a tab
        let newTab = gBrowser.addTab(url);
        if(makeTabActive) {
            //Make the tab active
            gBrowser.selectedTab = newTab;
        }
        return newTab;
    }
}

以上内容应适用于 Overlay 和 Bootstrapped 附加组件。它也可以在附加 SDK 中工作,方法是取消注释附加 SDK 的代码并注释掉覆盖/引导代码(获取activeWindow. 但是,对于 Add-on SDK,最好使用 SDK 特定的 API。

如果您希望它在新选项卡中显示“Hello World”,则在您的chrome/content目录中提供一个 HTML 文件并为其使用适当的 URL(例如),如您在chrome.manifest中的一行chrome://[as defined in your chrome.manifest]/content/helloWorld.html为您的插件定义的那样。content

于 2016-11-22T10:42:16.137 回答