So speichern Sie Daten in den Browser mit Daten: URL?

8

Ich habe ein Bookmarklet erstellt, das versucht, mit localStorage mit der folgenden data: url zu lesen und zu schreiben:

%Vor%

Dies führt zu folgendem Code im Browser:

%Vor%

Dieser Code versucht, die Zeichenfolge hello world in die localStorage des Browsers zu schreiben, die Zeichenfolge zu lesen und schließlich auf die Seite zu schreiben.

Dies führt jedoch zu folgendem Fehler:

  

Uncaught SecurityError: Fehler beim Lesen der 'localStorage' Eigenschaft von 'Window': Speicher ist in 'data:' URLs deaktiviert.

Da dieser Ansatz nicht funktioniert, bringt mich das auf die Frage: Wie speichert man Daten mit data: URL im Browser? Gibt es eine andere API als localStorage , mit der ich Daten in data: URLs speichern könnte?

BEARBEITEN:

Cookies funktionieren nicht. Wenn Sie versuchen, auf Cookies zuzugreifen, wird folgender Fehler angezeigt:

  

Uncaught DOMException: Fehler beim Lesen der "Cookie" -Eigenschaft von "Document": Cookies sind in 'data:' URLs deaktiviert.

EDIT 2:

Dateisystem-API funktioniert auch nicht. Schlägt mit dem Fehlerobjekt fehl:

    
jehna1 22.05.2016, 20:21
quelle

6 Antworten

8
  

@charlietfl Erstelle einen einfachen "Notizblock", wo ich Textinhalte im Browser beibehalten kann, auch wenn ich offline bin oder wenn der Browser neu gestartet wird.

Wenn Sie den Editor Use Case verwenden, handelt es sich um eine einfache Lösung, die offline arbeitet, wenn der Browser neu gestartet wird, auf mehreren Geräten beibehalten wird (wenn Sie Ihren Verlauf in Ihren verschiedenen Browsern teilen) und Sie mit dem zusätzlichen Bonus argumentieren können der Versionierung eingebaut ...

Ein "Speicher" -Mechanismus, den Sie zur Verfügung haben, ist die tatsächliche URL, daher scheint es eine mögliche Wahl zu sein. Solange Sie sich freuen, dass sich die URL in dieser Situation ändert, können Sie auf Folgendes aufbauen:

%Vor%

Hoffe diese Hilfe!

    
Ian Belcher 31.05.2016, 08:51
quelle
6

Sie können Blob() , URL.createObjectURL()

%Vor%

plnkr Ссылка

    
guest271314 27.05.2016 09:10
quelle
5

Kurze Antwort: Es ist nicht möglich! Dies liegt daran, dass alle Speichermechanismen aus Sicherheitsgründen an den Ursprung gebunden sind. Dies ist erforderlich, damit eine Seite nicht auf die Daten eines anderen zugreifen kann. In einer Daten-URL haben Sie keinen Ursprung, also wie sollte der Browser die Daten an Ihre Seite binden?

Lange Antwort: Sie brauchen es wahrscheinlich nicht für Ihren Anwendungsfall. Ich verweise Sie kommentieren:

  

@charlietfl Erstelle einen einfachen "Notizblock", wo ich Textinhalte im Browser beibehalten kann, auch wenn ich offline bin oder wenn der Browser neu gestartet wird.

Dies kann viel einfacher archiviert werden! Verwenden Sie keine Daten-URL dafür! Wahrscheinlich speichern Sie die Daten-URL als Lesezeichen, also entweder einmal, wenn der Benutzer auf Ihre Website zugreifen muss, um dieses Lesezeichen hinzuzufügen. Verwenden Sie diese Gelegenheit, um etwas anderes zu tun: Geben Sie dem Benutzer eine normale Webseite mit einem Application Cache Manifest . Damit haben Sie eine normale Seite mit all den üblichen Fähigkeiten wie Zugang zum localStorage, da Sie an einen Ursprung gebunden sind. Dank dem Application Cache Manifest wird diese Seite niemals neu geladen. Es wird einen Neustart des Browsers überleben und funktioniert komplett offline. Sie brauchen nur Internet beim ersten Besuch, um die App zu installieren.

Dies wird von allen gängigen Browsern unterstützt, und für Ihren einfachen Anwendungsfall einfach zu implementieren!

    
Lux 30.05.2016 13:49
quelle
1

Wie in einigen Kommentaren zu Ihrer Frage erwähnt wurde, wird lokaler Speicher in Daten: URLs nicht unterstützt. Das ist die einzige Antwort, die wir Ihnen geben können, weil die meisten Browser dies zumindest so handhaben.

Der Grund für diese Designentscheidung scheint darin zu liegen, dass lokaler Speicher an den Ursprung des Dokuments gebunden ist, so dass meine Website nicht auf lokalen Speicher von google.com usw. zugreifen kann. Im Fall von Daten: URLs dort ist kein Ursprung in irgendeinem sinnvollen Sinn des Wortes. Datei: URLs haben lokalen Speicher in einigen Browsern aktiviert (ich glaube, Firefox sicher, ich weiß nicht über Chrome), da dort zumindest das lokale Dateisystem herkommt. Eine Daten: URL hat keinen Ursprung, daher gibt es kein Schema, nach dem die lokalen Speicherdaten sortiert werden.

Wie es aussieht, hat Chrome dies als das beabsichtigte Verhalten deklariert und wird es wahrscheinlich nicht ändern, es sei denn, die lokale Speicherspezifikation wird aktualisiert, um explizit etwas anderes zu sagen, Firefox scheint auf die gleiche Weise zu lehnen, und das tue ich nicht wissen über IE, aber sie haben wahrscheinlich gefolgt.

    
Cole Erickson 22.05.2016 20:50
quelle
1

lokaler Speicher wird in Daten: URLs nicht unterstützt. Wenn Sie die Daten wirklich auf clientseitigen Cookies speichern möchten, ist dies die einzige Möglichkeit.

    
Yaseen Ahmad 26.05.2016 09:54
quelle
0

Das Speichern von Informationen lokal auf dem Computer eines Benutzers ist eine leistungsstarke Strategie für einen Entwickler, der etwas für das Web erstellt.

Wenn Sie an einer Webanwendung arbeiten, haben Sie zwei Arten von Webspeicher , die Ihnen dabei helfen, store & amp; retrive die Daten im Client Browser . Diese beiden Speicher sind

1. Lokaler Speicher
2. Sitzungsspeicher

Beide Speicher verwalten eine Datei, die Daten pro eindeutiger URL-ID in Objektform des Schlüsselwertpaares enthält. Zu diesem Zweck können Sie einen beliebigen Speicher localStorage () oder sessionStorage () verwenden.

für jeden Benutzer-Browser erstellt eine eindeutige URL-ID. Wenn Sie also versuchen, die Daten aus diesen Speichern abzurufen, benötigen Sie diese eindeutige URL, um die Daten abzurufen. Wenn Sie diese eindeutige URL nicht verwenden möchten, können Sie auch eine eigene benutzerdefinierte Kombination für die generierte URL implementieren.

Diese Speicher werden für verschiedene Zwecke verwendet & amp; haben ihre eigenen Funktionen.

Wenn Sie Ihre Daten in localStorage speichern, können Sie jederzeit darauf zugreifen, wenn Sie nach dem Schließen des Browsers nach dieser bestimmten eindeutigen URL zurückkommen.

Andererseits, wenn Sie sessionStorage für Store & amp; Daten abrufen, dann können Sie nur auf Daten zugreifen, wenn der Browser geöffnet ist. Wenn Sie den Browser schließen, werden alle Ihre Daten gelöscht. und wenn du zurückkommst, wirst du feststellen, dass nichts auf dieser URL existiert. und

Nun, Beispiel für Store & amp; Zugriff auf die Daten aus dem lokalen Speicher.

%Vor%

Wenn Sie versuchen, & amp; Greife auf die Daten zu, indem du der URL folgst.

%Vor%

Nun, ich hoffe, es wird Ihnen eine Idee geben, mit Webspeichern umzugehen. für weitere Informationen über Laden & amp; Zugreifen auf Daten aus dem Webspeicher. klicken Sie hier ..

    
Yash Mangla 31.05.2016 06:40
quelle

Tags und Links