2016-04-19 15 views
2

Ich realisierte eine Firefox-Erweiterung mit einer der letzten (oder der letzten) Version von jpm (1.0.5), aber die Erweiterung ruft nicht die Methoden startup() oder shutdown() auf. Ich weiß, dass obligatorisch sein sollte, die Erweiterung alsbootstrapped Erweiterung mit neuen jpm Firefox

<em:bootstrap>true</em:bootstrap> 

in die install.rdf Datei zu erklären, aber wenn ich meine Namespace erstellt habe (unter Verwendung von jpm init) gibt es nicht diese Datei, dass es aus dem Paket ersetzt wird. Json. Wie sollte ich in diesem Fall die Dateien ändern, damit die Startup- und Shutdown-Methoden funktionieren?

+0

Wenn jpm mit nicht ändern bootstrap.js diese Anleitung hier folgen - https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_Started_ % 28jpm% 29 – Noitidart

+0

Sorry, aber ich verstehe Ihren Kommentar nicht .... Ich spreche nicht über bootstrap.js (dass es nicht von der letzten Version von jpm erzeugt wird), sondern wie man "bootstrable" die Erweiterung – hasmet

+0

macht Was ist "bootstrapable"? Mit Twitter Bootstrap? Sie benutzen jpm, Sie sollten also nicht über install.rdf oder bootstrap.js nachdenken müssen. Mit bootstrapble meinen Sie twitter bootstrap.js/bootstrap.css? – Noitidart

Antwort

1

In meinem main.js höre ich für das Laden und Entladen wie folgt.

exports.main = function(options, callbacks) { 
    if (options.loadReason == "install" || options.loadReason == "startup") { 
     factory = new Factory(AboutDualView); 
     factory = new Factory(AboutEPFViewer); 
     registerRemotePages(); 
    } 
} 

exports.onUnload = function (reason) { 
    if (reason == "shutdown") { 
     factory.unregister(); 
     RemotePageManager.removeRemotePageListener("about:dualview"); 
     RemotePageManager.removeRemotePageListener("about:epfviewer"); 
    } 
}; 

function registerRemotePages(){ 
    let DualViewmanager = new RemotePages("about:dualview"); 
    let EPFViewmanager = new RemotePages("about:epfviewer"); 
} 

Referenz https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK/Tutorials/Listening_for_load_and_unload

1

Welche Art von Add-on haben Sie?

Klingt wie ein XUL/Overlay-Add-on mit der alten API. Wenn dies der Fall ist, müssen Sie Ihre eigene bootstrap.js Datei erstellen. Hast du alle Schritte bis convert an overlay extension to restartless durchlaufen?

jpm init erstellt den Bootstrap-Code nur bei Verwendung des Addons-SDK. Ich bin mir nicht sicher, ob jpm verwendet werden kann, es sei denn, Sie erstellen ein Add-on mit der neuen Addons-SDK-API, außer vielleicht die Möglichkeit, das Add-on über die Befehlszeile zu AMO zu packen und zu senden. Die Debugging-/Validierungsüberprüfungen von jpm scheinen einfach nicht viele Probleme zu bekommen, fast keine in XUL/Overlay API-basierten Add-Ons.

Vielleicht haben Sie schon hier gesucht? Bootstrapped extensions, die auf ein dokumentiertes Skelett bootstrap.js verweist.

Beachten Sie jedoch, dass in der chrome.manifest die overlay Anweisung in Bootstrapped-Erweiterungen nicht unterstützt wird.

Diese und andere Themen werden ebenfalls im Dokument "convert" behandelt, auf das oben verwiesen wurde.

+0

In meinem Fall ist das Addon nicht XUL/Overlay, sondern ist bereits ein neustartloses Addon. Tatsächlich ist mein Einstiegspunkt "main.js" (automatisch erstellt mit jpm init). Wenn ich mit jpm init ein neues Addon erstelle, den Code von developer.mozilla.org/en-US/docs/Extensions/bootstrap.js in meine Entry-Point-Datei einfüge und alle notwendigen Elemente importiere, kann ich mit dem Start nicht umgehen und Methoden zum Herunterfahren – hasmet