Функциональность кэша Back-button для Opera - PullRequest
5 голосов
/ 10 октября 2011

У меня есть некоторый jQuery, который изменяет элементы на странице после того, как пользователь выполняет действие. Они сохраняются на стороне сервера, поэтому все выглядит красиво и плавно для пользователя.

Когда пользователь щелкает вне сайта, а затем нажимает кнопку «Назад», все браузеры, кроме Opera, повторно запрашивают страницу, следовательно, изменения по-прежнему отображаются для пользователя. Однако с Opera сайт возвращается в состояние, предшествующее Jquery (поскольку он не запрашивал страницу с сервера).

Я мог бы сделать что-нибудь неприятное, например проверить браузер и обновить Opera, но, очевидно, это не идеально.

Есть идеи, как лучше решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 11 октября 2011

Не один, чтобы ответить на мой собственный вопрос, но, кажется, следующее решает мою проблему:

history.navigationMode = 'fast';

Установка этого означает, что страницы будут загружены в том состоянии, в котором они были, когда вы покидали страницу,что в основном то, что я искал.Похоже, что это настройка только для Opera, хотя это только Opera, которая действует по-другому.

Я нашел информацию здесь .

0 голосов
/ 25 октября 2011

В Opera есть некоторая эвристика, позволяющая определить, нуждается ли страница в повторной инициализации при навигации по истории.Эвристика включает в себя то, прослушивает ли страница событие unload (потому что мы не можем «отменить» то, что произошло событие unload), и запускался ли код, вызывающий навигацию, из события click (поскольку сценарии часто отключают кнопки и делают их необратимо обратимыми)изменения состояния страницы).Если вы можете избежать запуска эвристики (Keep It Simple), проблема должна исчезнуть даже без взлома history.navigationMode.

0 голосов
/ 11 октября 2011

Не могли бы вы, возможно, использовать некоторое локальное хранилище HTML5, чтобы сохранить эти изменения на стороне клиента (для тех пользователей, у которых есть браузеры, совместимые с HTML5) и изящно перейти на серверные запросы для тех, кто этого не делает.

После быстрого бега - похоже, что Opera начала поддерживать LocalStorage в Opera 10.5 (еще в начале 2010 года), я думаю, что она также автоматически обновляется, поэтому большинство из 2,7% пользователей, использующих Opera, должны иметь эту функцию.

Я бы предложил использовать http://www.modernizr.com/ для проверки наличия функциональности, а затем, возможно, сохранить результаты в Object Literal JSON, а результаты этого - в Local Storage (это должно упростить хранение и поиск!)

(Руководство по локальному хранилищу HTML5 - http://php -html.net / tutorials / html5-local-storage-guide / )

...