Safari, кажется, кэширует страницу и состояние DOM - PullRequest
0 голосов
/ 08 августа 2010

Я написал сценарий Greasemonkey, который прекрасно работает в NinjaKit, новом менеджере пользовательских скриптов Safari, но когда я пытаюсь скомпилировать тот же скрипт с помощью построителя расширений Safari 5, я получаю очень странное поведение.

Сценарий предоставляет пользователю экран редактирования параметров. Когда вы нажимаете кнопку «Сохранить», сценарий сохраняет пользовательские настройки в виде JSON-пакета с помощью HTML5 localstorage API, затем сценарий закрывает экран параметров и перезагружает страницу, при перезагрузке страницыскрипт должен перезагрузить настройки из JSON в localstorage, и скрипт должен действовать в соответствии с новыми настройками, чтобы отобразить страницу так, как этого хочет пользователь, в соответствии с заданными настройками.

Проблема, которую я вижу, заключается в том, чтоЯ запускаю его как расширение. Когда я нажимаю кнопку «Сохранить», скрипт перезагружает страницу, но при перезагрузке страницы изменения, внесенные пользователем в настройки, не применяются к странице.странная вещь: если я затем вручную перезагружаю страницу с помощью кнопки обновления браузера, изменения, сделанные пользователем в настройках, внезапно становятся очевидными.очевидно, что данные были сохранены в локальном хранилище, но по какой-то причине, когда страница перезагружается в первый раз, она каким-то образом перезагружается из кэшированного файла, и только при второй ручной перезагрузке новая страница отображается правильно.Я не могу понять, почему это работает как обычный пользовательский скрипт в ninjakit, а также на самом деле работает в Firefox, Opera и Google Chrome, он просто не будет работать как расширение в Safari, это так раздражает.Я испробовал множество способов убедиться, что Safari 5 не перезагружает кэшированную страницу, например, добавив дополнительные параметры в URL, но я просто не могу заставить его работать, без необходимости дважды перезагружать страницу.

Кстати, я не использую систему настроек расширения собственного safari, так как хочу, чтобы скрипт был кросс-браузерно-совместимым, поэтому я сохраняю настройки в localalstorage.

Кто-нибудь еще видел это?поведение?Или есть какие-нибудь подсказки, как это исправить?Это сводит меня с ума ...

1 Ответ

0 голосов
/ 11 августа 2010

Мне удалось решить проблему, хотя я не понял, что именно ее вызвало.

Я заставил скрипт работать, добавив его как «конечный скрипт», а не как «стартовый скрипт» в компоновщике расширений, теперь все вроде работает нормально. уф!

...