Функциональность кэша Back-button для Opera
У меня есть некоторые JQuery, который изменяет элементы на странице после того, как пользователь выполняет действие. Они сохраняются на стороне сервера, поэтому все выглядит красиво и плавно для пользователя.
Когда пользователь щелкает вне сайта, а затем нажимает кнопку "Назад", все браузеры, за исключением Opera, повторно запрашивают страницу, следовательно, изменения по-прежнему отображаются для пользователя. Однако с Opera сайт возвращается в состояние, предшествующее Jquery (поскольку он не запрашивал страницу с сервера).
Я мог бы сделать что-нибудь неприятное, например проверить браузер и обновить Opera, но, очевидно, это не идеально.
Есть идеи лучшего метода для решения этой проблемы?
3 ответа
Не один, чтобы ответить на мой собственный вопрос, но, кажется, следующее решает мою проблему:
history.navigationMode = 'fast';
Установка этого означает, что страницы будут загружены в том состоянии, в котором они находились, когда вы покидали страницу, что в основном и было то, что я искал. Похоже, что это настройка только для Opera, хотя это только Opera, которая действует по-другому.
Я нашел информацию здесь.
В Opera есть некоторая эвристика, позволяющая определить, нуждается ли страница в повторной инициализации при навигации по истории. Эвристика включает в себя то, прослушивает ли страница событие unload (потому что мы не можем "отменить" то, что было сделано событием unload), и запускался ли код, вызывающий навигацию, из события click (поскольку сценарии часто отключают кнопки и делают их необратимо обратимыми). изменения состояния страницы). Если вы можете избежать запуска эвристики (Keep It Simple), проблема должна исчезнуть даже без взлома history.navigationMode.
Не могли бы вы, возможно, использовать некоторое локальное хранилище 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/)