Wie kann ich in einen lokalen Speicher einer anderen Domäne schreiben. Die Idee ist, dass ich meine Chrome-Erweiterung brauche, um etwas in den lokalen Speicher zu schreiben, und wenn der Benutzer die zugehörige Website besucht, kann die Site-Site den Inhalt des lokalen Speichers lesen. Ich versuche eine Synchronisierung zwischen den persönlichen Daten des Benutzers durchzuführen, ohne sie auf dem Server speichern zu müssen.Chrome-Erweiterung - Schreiben in den lokalen Speicher einer anderen Domäne
Antwort
Ich denke, die einzige Lösung, um dies zu tun ist über Skript-Injektion aufgrund der domänenübergreifenden Einschränkungen.
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
eine Datei script.js
zu Ihrer Erweiterung der anderen Seiten local Zugriff hinzufügen, haben Sie script.js
auf „web_accessible_resources“ in Ihrer Manifest-Datei hinzuzufügen.
Beachten Sie, dass das Skript automatisch entfernt wird, nachdem das Skript vollständig geladen wurde. Stellen Sie daher sicher, dass der Code, den Sie ausführen möchten, in einer selbstausführbaren Funktion enthalten ist.
haben direkten Zugriff auf eine lokaleSpeicherstelle.
Wenn Sie einen Wert für eine bestimmte Domäne speichern möchten, öffnen Sie einfach ein Fenster oder einen Rahmen und schreiben Sie in den lokalen Speicher des Fensters/der Seite.
Ihre Lieblings-Option Wählen Sie die Seite zu aktivieren:
chrome.tabs.create
ein inaktives Register zu schaffen, vielleicht in den nicht aktiven Fenstern unter Verwendungchrome.tabs.query
gefunden.- Die experimentelle
offscreenTabs
API (experimentell, so nicht bereit für den Einsatz in der Produktion). Siehe einige der examples, die ich auf SO gepostet habe. - Erstellen Sie einen IFrame und fügen Sie ihn in die aktuelle Seite ein.
window.open
(nicht empfohlen ...)
Wenn Sie sich entscheiden, eine Seite zu öffnen, eine auswählen, die leichtgewichtig ist.
/robots.txt
ist normalerweise eine gute Wahl: Es existiert auf den meisten Seiten, und es ist eine einfache Textdatei.Aktivieren Sie das Inhaltsskript für die Seite. Sie können entweder die Manifestdatei verwenden und die APIs messaging verwenden oder einen Rückruf zur
chrome.tabs.create
-Methode hinzufügen, die programmatisch ein Inhaltsskript einfügt (chrome.tabs.executeScript
).
Hier ist ein einfaches Beispiel. Es erfordert die tabs
API, weil ich chrome.tabs.executeScript
verwende. Außerdem sollte der Ursprung, auf den Sie zugreifen möchten, ebenfalls der Berechtigungsliste hinzugefügt werden.
chrome.tabs.create({
active: false,
url: 'http://stackoveflow.com/robots.txt'
}, function(tab) {
chrome.tabs.executeScript(tab.id, {
code: 'localStorage.setItem("key", "value");'
}, function() {
chrome.tabs.remove(tab.id);
});
});
- 1. CreateInstanceAndUnwrap in einer anderen Domäne?
- 2. Hochladen von Dateien aus einer Domäne in einer anderen Domäne
- 3. Können wir den Wert von localStorage aus anderen Domäne verwenden
- 4. Werkzeuge für den lokalen Speicher
- 5. Wie kann ich den TeamCity-Server für den Zugriff von anderen Computern in meinem lokalen Netzwerk/meiner lokalen Domäne konfigurieren?
- 6. XMLHttpRequest zu einer anderen Domäne
- 7. Duplizieren Cookies in einer anderen Domäne
- 8. Datei hochladen in einer anderen Domäne
- 9. Response.redirect tötet lokalen Speicher?
- 10. Login zu einer anderen Domäne von Powershell
- 11. Umleiten zu einer anderen Domäne, aber behalten Sie typisierte Domäne
- 12. Wert über lokalen Speicher prüfen
- 13. Winkelmesser - leeren lokalen Speicher
- 14. Konfigurieren IIS-Authentifizierung von einer anderen Domäne
- 15. Ein Cookie aus einer anderen Domäne lesen
- 16. Speichern einer Funktion im lokalen Speicher
- 17. Selen-Keks mit einer anderen Domäne
- 18. HTML5 Ajax zu einer anderen Domäne?
- 19. Thread lokalen Speicher in Assembly
- 20. .htaccess alle Dateien aus Unterverzeichnis in einer Domäne zu einer anderen Domäne umleiten
- 21. Thread lokalen Speicher
- 22. Wie lösche ich den lokalen Speicher in IE11?
- 23. C - Vom Kernelmodul in den physischen Speicher schreiben
- 24. HTML-Formulare, fügen Daten aus einer anderen Domäne hinzu
- 25. Wie lösche ich den isolierten Speicher einer anderen Anwendung?
- 26. Überprüfung der Windows-Benutzeranmeldeinformationen in einer anderen Domäne
- 27. Umleiten einer Domäne zu einem anderen mit htaccess
- 28. Python, in den Speicher schreiben zip in die Datei
- 29. wie in einer Schleife abrufen Mehr Effizienz lokalen Speicher getitem
- 30. i18n Übersetzung mit einer anderen Domäne in .py Dateien
Sicher sieht dies wie eine praktikable Lösung aus. Obwohl das Problem, das ich gerade habe, ich muss es von einer Hintergrundseite tun. Wenn Sie eine intakte Registerkarte erstellen, wird dem Benutzer etwas angezeigt. Offscreen-Registerkarten funktionieren nicht mit Hintergrundseiten. Window.open() ist offensichtlich keine Lösung. Ich werde aber den iFrame ausprobieren und euch wissen lassen wie es geht. – budsiya