Откройте новую вкладку с надписью "Hello World"

Как открыть новую вкладку и создать в ней новый HTML-документ? Предпочтительно использовать старый API, необходимый для перезагрузки, например Components.classes, Components.interfaces вещи, но любой способ, который работает, хорошо.

1 ответ

Решение

В одной из моих надстроек я использую следующий код для открытия 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 надстройки и закомментировав код Overlay/bootstrapped (строки, которые получают activeWindow). Однако для надстройки SDK было бы лучше использовать специальные API для SDK.

Если вы хотите, чтобы на новой вкладке было написано "Hello World", предоставьте файл HTML в chrome/content каталог и использовать соответствующий URL для него (например, chrome://[as defined in your chrome.manifest]/content/helloWorld.html), как определено для вашего дополнения в content строка в вашем chrome.manifest.

Другие вопросы по тегам