Safari, кажется, кэширует страницу и состояние DOM
Я написал javascript Greasemonkey, который отлично работает в NinjaKit, новом менеджере пользовательских скриптов Safari, но когда я пытаюсь скомпилировать тот же скрипт с помощью компоновщика расширений Safari 5, я получаю очень странное поведение.
Сценарий предоставляет пользователю экран редактирования параметров. Когда вы нажимаете кнопку "Сохранить", сценарий сохраняет пользовательские настройки в виде JSON-пакета с помощью HTML5 localstorage API, затем сценарий закрывает экран параметров и перезагружает страницу, после перезагрузки страницы. скрипт должен перезагрузить настройки из JSON в localstorage, а скрипт должен воздействовать на новые настройки, чтобы отобразить страницу так, как этого хочет пользователь, в соответствии с заданными настройками.
Проблема, которую я вижу, заключается в том, что когда я запускаю его как расширение, когда я нажимаю кнопку сохранения, скрипт перезагружает страницу, но когда страница перезагружается, изменения, сделанные пользователем в настройках, не применяются к странице. странная вещь: если я затем вручную перезагружаю страницу с помощью кнопки обновления браузера, изменения, сделанные пользователем в настройках, внезапно становятся очевидными. очевидно, что данные были сохранены в localalstorage, но по какой-то причине, когда страница перезагружается в первый раз, она каким-то образом перезагружается из кэшированного файла, и только при второй ручной перезагрузке новая страница отображается правильно. Я не могу понять, почему это работает как обычный пользовательский скрипт в ninjakit, а также на самом деле работает в Firefox, Opera и Google Chrome, он просто не будет работать как расширение в Safari, это так раздражает. Я испробовал множество способов убедиться, что Safari 5 не перезагружает кэшированную страницу, например, добавив дополнительные параметры в URL, но я просто не могу заставить его работать, без необходимости дважды перезагружать страницу.
Кстати, я не использую встроенную систему настроек расширений Safari, поскольку хочу, чтобы скрипт был кросс-браузерно-совместимым, поэтому я сохраняю настройки в localalstorage.
Кто-нибудь еще был свидетелем такого поведения? Или есть какие-нибудь подсказки, как это исправить? Это сводит меня с ума...
1 ответ
Мне удалось решить проблему, хотя я не понял, что именно вызвало ее.
Сценарий работает, добавив его в качестве "конечного сценария", а не "начального сценария" в построителе расширений, теперь все работает нормально. уф!