Ihre Firefox-Erweiterung läuft in einem anderen Javascript-Kontext als Ihre HTML-Seite, daher kann die Erweiterung nicht direkt aus dem Javascript in Ihrer HTML-Seite aufgerufen werden.
Sie können jedoch die Erweiterung entwerfen, um den Zugriff von HTML zu ermöglichen. HTML JavaScript ist im Allgemeinen nicht erlaubt, um auf das Component-Objekt zuzugreifen. Daher müssen Sie dem HTML-Code erlauben, auf das Objekt in Ihrer Erweiterung zuzugreifen. Erstellen Sie dazu eine XPCOM-Komponente in Ihrer Erweiterung, und legen Sie das Objekt in der Kategorie "JavaScript global property" über das nsICategoryManager-Objekt fest. Der Eintragsname ist die Zeichenfolge, die von nicht privilegiertem JavaScript verwendet wird. Der Wert ist die Vertrags-ID für Ihre XPCOM-Klasse.
Sie müssen jedoch auch nicht privilegierten JavaScript-Zugriff auf Ihr Objekt zulassen, da andernfalls der Skript-Sicherheitsmanager den Zugriff blockiert. Um dies zu ermöglichen, implementieren Sie nsISecurityCheckedComponent - canCreateWrapper (in nsIIDPtr iid), canCallMethod (in nsIIDPtr iid, in wstring methodName), canGetProperty (in nsIIDPtr iid, in wstring propertyName) und canSetProperty (in nsIIDPtr iid, in wstring propertyName), um allAccess zurückzugeben für die erlaubten Eigenschaften und ansonsten noAccess.
Seien Sie vorsichtig, was Sie mit Benutzereingaben tun und wozu Sie den Zugriff erlauben - es ist sehr einfach, versehentlich eine Sicherheitslücke im Browser zu erzeugen.
Ich habe diesen Fehler, wenn ich versuche, in der Erweiterung zu einer XML-Datei zu schreiben: Fehler: Zugriff für verweigerte Eigenschaft XPCComponents.classes Jede Idee zu bekommen, wie dieses Problem zu lösen? –
Beziehen Sie sich auf ein