Wie öffne ich eine neue Registerkarte, und erstellen Sie ein neues HTML-Dokument darin? Vorzugsweise mit alten Neustart erforderlichen API, wie Components.classes
, Components.interfaces
Zeug, aber jeder Weg, der funktioniert, ist in Ordnung.Öffnen Sie eine neue Registerkarte mit "Hallo Welt"
Antwort
In einem meiner Add-ons, verwende ich den folgenden Code entweder eine URL in einem Tab zu öffnen oder ein Fenster:
/**
* 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;
}
}
Die oben sollte in Overlay arbeiten und Bootstrapped Add-ons. Es kann auch im Add-on-SDK funktionieren, indem der Code für das Add-on-SDK auskommentiert und der Overlay/Bootstrapped-Code (die Zeile (n), die activeWindow
erhalten), auskommentiert wird. Für das Add-on-SDK ist es jedoch besser, die SDK-spezifischen APIs zu verwenden.
Wenn Sie es wünschen „Hallo Welt“ zu sagen, in der neuen Registerkarte, geben Sie dann eine HTML-Datei in Ihrem chrome/content
Verzeichnis und verwenden Sie eine entsprechende URL für sie (zB chrome://[as defined in your chrome.manifest]/content/helloWorld.html
), wie für Ihr Add-on, die in einem content
line in Ihrem chrome.manifest.
- 1. Öffnen Sie MPI "Hallo, Welt!" kompiliert nicht
- 2. Öffnen Sie eine neue Registerkarte in Safari programmgesteuert mit JS
- 3. Django Apache Hallo Welt
- 4. Android-Hallo Welt
- 5. Implementieren Sie "Hallo Welt" mit RabbitMq
- 6. Öffnen Sie eine neue Registerkarte mit Javascript, aber bleiben Sie auf der aktuellen Registerkarte mit Javascript
- 7. Programmatisch eine neue Registerkarte in ie7 öffnen
- 8. eine neue Registerkarte öffnen PDF-Datei lesen
- 9. Öffnen Sie eine neue Registerkarte/Fenster und schreiben Sie etwas?
- 10. Grafiktreiber "Hallo Welt" Beispiel?
- 11. Hilfe mit "Hallo Welt" pbsdsh
- 12. print ("Hallo Welt") in schneller Anzeige als "Hallo Welt \ n"
- 13. Android "Hallo Welt" Layout Problem auf Galaxy Registerkarte Bildschirm
- 14. Classic Hallo Welt
- 15. Öffnen Sie neue Registerkarte in Jquery
- 16. Öffnen Sie Google-Links in neue Registerkarte
- 17. Hallo Welt Syntaxfehler
- 18. Hallo-Welt für CUDA.Net
- 19. haskell leksah Hallo-Welt
- 20. Hallo Welt in Prolog
- 21. Verständnis Assembly Hallo Welt
- 22. DDK "Hallo Welt"
- 23. RJB Hallo Welt Beispiel
- 24. Neue Registerkarte öffnen und ursprüngliche Registerkarte auf neue Seite umleiten
- 25. Hallo Welt in Apache
- 26. Versammlung, hallo Welt Frage
- 27. Hallo Welt in mod_wsgi
- 28. Firefox Öffnen Sie eine neue Registerkarte anstelle eines Pop-Fensters?
- 29. Öffnen Sie eine neue Registerkarte auf Schaltfläche klicken in AngularJS
- 30. Öffnen Sie eine neue Registerkarte automatisch in iOS
Was für Sie * funktioniert, hängt von der Art des Add-ons ab, das Sie schreiben. Was Sie angegeben haben, bedeutet, dass Sie ein Overlay/XUL-Add-on schreiben. Ist das korrekt? Wenn ja, sollten Sie ** ernsthaft ** in Erwägung ziehen, ein WebExtension- oder Add-On-SDK-basiertes Add-on zu schreiben. Siehe [Einführung in Firefox-Add-Ons in der Dokumentation] (http://stackoverflow.com/documentation/firefox-addon/3235/introduction-to-firefox-add-ons/13574/introduction#t=201609290133319078047). – Makyen
Ja, ich habe Overlay/XUL Addons. Ich überlegte, sie zu bewegen, hatte aber nicht genug Zeit dafür. Dinge, die ich wissen muss, um zu migrieren sind (1) Ist es möglich, globale Variablen/Zugriffserweiterungen über die Browser-Konsole in neuen Erweiterungen zu setzen? und (2) Gibt es noch eine Alternative zu nsIStreamListener/TracingListener in der neueren API? – Vibok
Im Add-on-SDK können Sie fast alles in JavaScript machen, was Sie im Overlay- oder Bootstrap-Add-On tun könnten (offensichtlich nicht * chrome.manifest * 'overlay's). Das Add-On-SDK ist ein Bootstrapped-Add-On mit einem Wrapper. Sie können aus dem Wrapper ausbrechen, wenn Sie Dinge ausführen möchten, die nicht direkt von den Add-On-SDK-APIs unterstützt werden. – Makyen