2016-08-01 27 views

Antwort

1

SDK Addons haben nicht haben kein gemeinsames globales Objekt. Jedes Modul hat sein eigenes globales Netzwerk, in das die gemeinsame Funktionalität injiziert wird, am häufigsten die require()-Funktion, die dann Zugriff auf exportierte Objekte von anderen Modulen bereitstellt.

Zum Debuggen könnten Sie console.log(this) in einem Modul und dann Zugriff auf das geloggte Objekt von der About: Debugging-Konsole für dieses Addon über Rechtsklick -> als globale Variable auf der Konsole-Ausgabe speichern.

Beachten Sie auch, dass das globale Objekt ist nicht das gleiche wie der Top-Level-Umfang in einer Datei. var Erklärungen, this.foo = ... Zuweisungen und und function bar() {} Aussagen lassen auf das globale Objekt angebracht ist, let, const oder irgendetwas in einem IIFE nicht.

So Zugriff bekommen auf ein Objekt ist nicht das gleiche wie eine Konsole laufen im gleichen Umfang haben.

Das einfache Protokollieren der Objekte, auf die Sie zugreifen müssen, und das anschließende Binden der protokollierten Objekte an die aktuelle Konsole, ist für mich der Regelfall.

+0

Dank. Seltsam speichern als globale Variable scheint nicht für mich zu arbeiten. Meine derzeitige Lösung besteht darin, einen Debug-Punkt in meinen Code einzufügen und dann nur den lokalen Kontext zu verwenden, aber das scheint irgendwie hackisch zu sein. Gibt es keinen Standard-Zugang zum Kontext der "main" JavaScript-Datei des Addons? –

+0

ich denke, es gibt einen Bug für das irgendwo auf Bugzilla, aber schließlich läuft jedes Modul mit einem separaten globalen und einem Bereich sowieso, also haben Sie nie Zugang zu allen von ihnen sofort. – the8472