2017-12-29 24 views
0

Ich habe eine Erweiterung in Chrome, die chrome.storage.local.set und .get verwendet. Ich habe Probleme beim Verständnis der WebExtensions-API-Dokumentation hinsichtlich der Portierung des Speichercodes auf Firefox.Cross-Browser-Erweiterung Speicher: chrome.storage oder browser.storage oder?

Einige der Beispielcodes, auf die mit from the WebExtensions API doc verwiesen wird, verwenden browser.storage.local.set und .get, aber diese Zeilen geben "Browser ist nicht definiert" zurück, wenn ich sie in meiner in Chrome ausgeführten Erweiterung verwende. Die WebExtensions-API-Portierung doc here schlägt vor, dass chrome.storage.local.set und .get in Firefox und Safari funktionieren sollten, aber vielleicht lese ich sie falsch?

Ich habe chrome.storage.set und .get noch nicht in einer Firefox-Erweiterung ausprobiert. Sollten sie nur funktionieren?

+2

'Chrome' funktioniert in FF, aber nicht in Edge. Wie für Safari, WebExtensions überhaupt nicht unterstützt. – wOxxOm

Antwort

-1

chrome.storage.set und chrome.storage.get funktioniert in Firefox-Erweiterung, aber besser zu verwenden storage API.

Hier ist Beispiel für die Nutzung: https://github.com/mdn/webextensions-examples/blob/master/navigation-stats/popup.js#L26

Der Unterschied mit Chrom, das es ist eine Promised-basierte API.

Für Safari können Sie settings API betrachten.

Sie können auch immer cookies oder localStorage auf Ihrer BG-Seite oder Ihrem Inhaltsskript verwenden.

+0

zwei Fragen dazu: 1) Warum ist die Storage-API, die Sie verlinkt haben, "besser"/was ist eine "Promise-basierte" API? und 2) das Beispiel verwendet den Code "browser.storage.local.set/.get", der in Chrome nicht funktioniert, wie in der Frage angegeben - ist das, weil ich irgendwo 'Browser' definieren muss, oder? –

+0

1) Derzeit unterstützt Firefox [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities] 'chrome' und' browser' Namespace, aber in Zukunft können sie ablehnen chrome' support und left only 'browser'. Im obigen Link können Sie auch einen Unterschied zwischen Promise-basierter API und Callbacks überprüfen. [hier] (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension) können Sie weitere Informationen darüber erhalten, wie Sie Ihre Chrome-Erweiterung in Firefox portieren können. 2) Leider wird der Browser-Namespace in Chrome nicht unterstützt. Sie müssen also nur 'chrome' verwenden. –

Verwandte Themen