2010-08-07 23 views
0

J'ai écrit un javascript Greasemonkey qui fonctionne très bien dans NinjaKit le nouveau gestionnaire d'utilisateurs Safari, mais quand j'essaie de compiler le même script en utilisant le constructeur d'extension Safari 5, je reçois très comportement bizarre. Le script donne à l'utilisateur un écran d'édition des 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 HTML5 localstorage, le script ferme alors l'écran des options et recharge la page. la page recharger, le script devrait recharger les préférences du JSON dans localstorage, et le script devrait agir sur les nouvelles préférences pour afficher la page de la façon dont l'utilisateur le souhaite en fonction des paramètres qu'il a définis. Le problème que je vois est quand je l'exécute comme une extension, quand je clique sur le bouton de sauvegarde, le script recharge la page, mais quand la page est rechargée les changements que l'utilisateur a faits aux arrangements ne sont pas appliqués la page. la partie bizarre est, si je recharge ensuite manuellement la page via le bouton d'actualisation des navigateurs, les changements que l'utilisateur fait dans les paramètres deviennent soudainement apparents. donc évidemment les données ont été enregistrées dans localstorage, mais pour une raison quelconque lorsque la page est rechargée pour la première fois, elle est en quelque sorte rechargée à partir d'un fichier mis en cache, et seulement sur le second rechargement manuel. Je ne peux pas comprendre pourquoi cela fonctionne comme un simple utilisateur de Ninjakit, et fonctionne également dans Firefox, Opera et Google Chrome, il 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 n'arrive tout simplement pas à la faire fonctionner sans avoir à recharger la page deux fois.Safari semble mettre en cache la page et l'état DOM

BTW Je n'utilise pas le système de paramètres de l'extension natif safari car je souhaite que le script soit compatible avec tous les navigateurs, c'est pourquoi je sauvegarde les paramètres dans localstorage.

Est-ce que quelqu'un d'autre a été témoin de ce comportement? Ou avez-vous des indices pour résoudre ce problème? Il me conduit mentale ...

+0

Les tags n'appartiennent pas au titre de la question. L'édition de QuantumSoup était une amélioration majeure, et les éditions suivantes n'étaient que des commentaires superflus. –

Répondre

0

J'ai réussi à résoudre le problème si je n'ai pas compris exactement ce qui le causait. J'ai obtenu le script de travail en l'ajoutant comme un «script de fin» plutôt que comme un «script de démarrage» dans le constructeur d'extension, tout semble fonctionner correctement maintenant. phew!