Frage

Ich habe ein Greasemonkey JavaScript geschrieben, das in Ninjakit, dem neuen Safari -UserScript -Manager, einwandfrei funktioniert. Wenn ich jedoch versuche, dasselbe Skript mit dem Safari 5 -Erweiterungsbauer zu kompilieren, bekomme ich ein sehr seltsames Verhalten.

Das Skript bietet dem Benutzer einen Optionsbildschirm zum Bearbeiten des Bildschirms. Wenn Sie auf die Schaltfläche Speichern speichern, speichert das Skript die Einstellungen der Benutzer als JSON -Paket über die HTML5 -Lokalstorage -API. Das Skript schließt dann den Bildschirm "Optionen" und lädt die Seite neu auf der Seite neu. Das Skript sollte die Einstellungen aus dem JSON in LocalStorage neu laden, und das Skript sollte auf die neuen Einstellungen reagieren, um die Seite so anzuzeigen, wie der Benutzer es nach den Einstellungen wünscht.

Das Problem, das ich sehe, ist, wenn ich es als Erweiterung ausführe, wenn ich auf die Schaltfläche Speichern klicke, lädt das Skript die Seite neu, aber wenn die Seite neu geladen wird, wird die Änderungen neu geladen, die der Benutzer an den Einstellungen vorgenommen wird, wird nicht auf die Seite angewendet. Der seltsame Teil ist, wenn ich die Seite dann manuell wieder über die Browser -Aktualisierungsschaltfläche neu lade, wird die Änderungen, die der Benutzer in den Einstellungen vorgenommen hat, plötzlich offensichtlich. Die Daten wurden also offensichtlich in der Lokalstors gespeichert, aber aus irgendeinem Grund, wenn die Seite zum ersten Mal nachgeladen wird, wird sie irgendwie aus einer zwischengespeicherten Datei neu geladen, und nur beim zweiten manuellen Nachladen ist die neue Seite richtig angezeigt. Ich kann nicht verstehen, warum dies als einfaches Benutzerkript in Ninjakit funktioniert und tatsächlich auch in Firefox, Opera und Google Chrome funktioniert. Es funktioniert nur nicht als Erweiterung in Safari, es ist soooo ärgerlich. Ich habe viele Möglichkeiten ausprobiert, um sicherzustellen, dass Safari 5 eine zwischengespeicherte Seite nicht neu laden, z. B. zusätzliche Parameter zur URL hinzuzufügen, aber ich kann sie einfach nicht zum Laufen bringen, ohne die Seite zweimal neu laden zu müssen.

Übrigens verwende ich das System der nativen Safari -Erweiterungseinstellungen nicht, da das Skript mit dem Querbrowser kompatibel ist. Deshalb speichere ich die Einstellungen auf LocalStorage.

Hat noch jemand dieses Verhalten gesehen? Oder haben Sie irgendwelche Hinweise, wie Sie das beheben können? Es macht mich mental ...

War es hilfreich?

Lösung

Ich habe es geschafft, das Problem zu lösen, obwohl ich nicht genau herausgefunden habe, was es verursachte.

Ich habe das Skript funktioniert, indem ich es als "Endskript" und nicht als "Startskript" im Erweiterungsbauer hinzugefügt hat. Alles scheint jetzt gut zu funktionieren. Puh!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top