Pregunta

He escrito un JavaScript de Greasemonkey que funciona bien en Ninjakit, el nuevo administrador de servicios de usuarios de Safari, pero cuando intento compilar el mismo script usando el Safari 5 Extension Builder, obtengo un comportamiento muy extraño.

El script le da al usuario una pantalla de edición de opciones, cuando hace clic en el botón Guardar, el script guarda las preferencias de los usuarios como un paquete JSON a través de la API HTML5 LocalStorage, el script luego cierra la pantalla de opciones y vuelve a cargar la página, en la página recarga, El script debe volver a cargar las preferencias del JSON en LocalStorage, y el script debe actuar sobre las nuevas preferencias para mostrar la página de la forma en que el usuario lo desea de acuerdo con la configuración que realizó.

El problema que estoy viendo es cuando lo ejecuto como una extensión, cuando hago clic en el botón Guardar, el script recarga la página, pero cuando la página se vuelve a cargar los cambios que el usuario realiza a la configuración no se aplica a la página. La parte extraña es que, si luego vuelvo a cargar la página manualmente a través del botón de actualización de los navegadores, los cambios que el usuario realizó en la configuración se hace evidente de repente. Obviamente, los datos se han guardado en el almacenamiento local, pero por alguna razón, cuando la página se vuelve a cargar por primera vez, de alguna manera se está volviendo a cargar de un archivo en caché, y solo en la recarga del segundo manual, se muestra la nueva página correctamente. No puedo entender por qué esto funciona como un simple usuario en Ninjakit, y también funciona en Firefox, Opera y Google Chrome, simplemente no funcionará como una extensión en Safari, es tan molesto. He intentado muchas maneras de asegurarme de que Safari 5 no vuelva a cargar una página en caché, por ejemplo, agregando parámetros adicionales a la URL, pero no puedo hacer que funcione, sin tener que recargar la página dos veces.

Por cierto, no estoy usando el sistema de configuración de extensión de Safari nativo, ya que quiero que el script sea compatible con el navegador cruzado, por eso estoy guardando la configuración en LocalStorage.

¿Alguien más ha sido testigo de este comportamiento? ¿O tienes pistas sobre cómo solucionar esto? Me está impulsando mental ...

¿Fue útil?

Solución

Logré resolver el problema, aunque no descubrí exactamente qué lo estaba causando.

Hice que el script funcionara al agregarlo como un "script final" en lugar de un "script de inicio" en el constructor de extensiones, todo parece funcionar bien ahora. ¡Uf!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top