Откройте новую вкладку с надписью "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.