Domanda

Ho scritto un JavaSemonkey JavaScript che funziona bene in Ninjakit il nuovo direttore di Safari Usscript, ma quando provo a compilare lo stesso script usando il Builder Extension Safari 5 ottengo un comportamento molto strano.

Lo script fornisce all'utente una schermata di modifica delle opzioni, quando si fa clic sul pulsante Salva, lo script salva le preferenze degli utenti come pacchetto JSON tramite l'API HTML5 LocalStorage, lo script chiude quindi la schermata delle opzioni e ricarica la pagina, nella pagina Ricarica, Lo script dovrebbe ricaricare le preferenze dal JSON in LocalStorage e lo script dovrebbe agire sulle nuove preferenze per visualizzare la pagina come l'utente lo desidera in base alle impostazioni realizzate.

Il problema che sto vedendo è quando lo eseguo come estensione, quando faccio clic sul pulsante Salva, lo script ricarica la pagina, ma quando la pagina viene ricaricata le modifiche apportate dall'utente alle impostazioni non vengono applicate alla pagina. La parte strana è, se quindi ricarico di nuovo manualmente la pagina tramite il pulsante di aggiornamento dei browser, le modifiche dell'utente apportate nelle impostazioni fanno improvvisamente evidente. Quindi, ovviamente, i dati sono stati salvati su LocalStorage, ma per qualche motivo quando la pagina si ricarica per la prima volta, in qualche modo viene ricaricata da un file memorizzata nella cache e solo nel secondo ricarica manuale, è la nuova pagina visualizzata correttamente. Non riesco a capire perché funzioni come un semplice per utenti in Ninjakit, e in realtà funziona anche in Firefox, Opera e Google Chrome, non funzionerà come estensione in Safari, è così fastidioso. Ho provato molti modi per assicurarmi che Safari 5 non ricarica una pagina memorizzata nella cache, ad esempio aggiungendo parametri extra all'URL, ma non riesco a farlo funzionare, senza dover ricaricare la pagina due volte.

A proposito, non sto usando il sistema di impostazioni di estensione Safari nativa poiché voglio che lo script sia compatibile con il browser incrociato, quindi è per questo che sto salvando le impostazioni su LocalStorage.

Qualcun altro ha assistito a questo comportamento? O hai qualche indizio su come risolvere questo problema? Mi sta guidando mentale ...

È stato utile?

Soluzione

Sono riuscito a risolvere il problema anche se non ho capito esattamente cosa lo stava causando.

Ho fatto funzionare lo script aggiungendolo come uno "script finale" piuttosto che uno "script di avvio" nel costruttore di estensioni, ora sembra che tutto funzioni bene. Uff!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top