Question

J'ai écrit un javascript grasemonkey qui fonctionne bien dans Ninjakit le nouveau gestionnaire de safari Userscript, mais lorsque j'essaie de compiler le même script en utilisant le constructeur d'extension Safari 5, j'obtiens un comportement très étrange.

Le script donne à l'utilisateur un écran d'édition d'options, lorsque vous cliquez sur le bouton Enregistrer, le script enregistre les préférences des utilisateurs en tant que paquet JSON via l'API localstorage HTML5, le script ferme ensuite l'écran des options et recharge la page, sur la page Reload, Le script doit recharger les préférences du JSON dans LocalStorage, et le script doit agir sur les nouvelles préférences pour afficher la page comme l'utilisateur le souhaite en fonction des paramètres qu'il a créés.

Le problème que je vois est lorsque je l'exécute comme une extension, lorsque je clique sur le bouton Enregistrer, le script recharge la page, mais lorsque la page est rechargée, les modifications apportées par l'utilisateur apportées aux paramètres ne sont pas appliquées à la page. La partie étrange est que si je recharge manuellement la page à nouveau via le bouton Rafraîchissement des navigateurs, les modifications que l'utilisateur apportées dans les paramètres deviennent tout d'un coup est apparente. Donc, évidemment, les données ont été enregistrées sur LocalStorage, mais pour une raison quelconque, lorsque la page recharge pour la première fois, elle est en quelque sorte rechargée à partir d'un fichier en cache, et uniquement sur le deuxième rechargement manuel, est la nouvelle page affichée correctement. Je ne peux pas comprendre pourquoi cela fonctionne comme un écrit d'utilisateur simple dans Ninjakit, et fonctionne également dans Firefox, Opera et Google Chrome, cela ne fonctionnera pas comme une extension dans Safari, c'est tellement ennuyeux. J'ai essayé de nombreuses façons de m'assurer que Safari 5 ne recharge pas une page mise en cache, par exemple en ajoutant des paramètres supplémentaires à l'URL, mais je ne peux tout simplement pas le faire fonctionner, sans avoir à recharger la page deux fois.

BTW Je n'utilise pas le système de paramètres d'extension Safari natif car je veux que le script soit compatible avec le navigateur croisé, c'est pourquoi j'enregistre les paramètres de LocalStorage.

Quelqu'un d'autre a-t-il été témoin de ce comportement? Ou vous avez des indices comment résoudre ce problème? Ça me rend mental ...

Était-ce utile?

La solution

J'ai réussi à résoudre le problème bien que je n'ai pas compris exactement ce qui le provoquait.

J'ai fait fonctionner le script en l'ajoutant comme un "script final" plutôt que comme un "script de démarrage" dans le constructeur d'extension, tout semble bien fonctionner maintenant. phew!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top