Ответ 1
Это то, что я искал: http://nix.lv/history/demo.html#3
Найдено: Сохранить привязку в истории ie6
Gmail использует #, когда вы нажимаете на письмо, чтобы различать страницу (+ действие Ajax). http://mail.google.com/mail/#inbox/1238e709e37a1394
Я нашел: Google использует # вместо поиска? в URL. Почему?
В FF или Chrome вы можете использовать Forward и Back без обновления между этими URL-адресами: http://X.com/MyPage.aspx#1 http://X.com/MyPage.aspx#2 http://X.com/MyPage.aspx#3
Но в IE обновляется страница, и она не учитывает параметры после #, когда выполняется обратное действие.
Как Gmail совершает магию?
Это то, что я искал: http://nix.lv/history/demo.html#3
Найдено: Сохранить привязку в истории ie6
Я могу дать вам ответ на этот вопрос, потому что я столкнулся и решил эту проблему.
Вначале есть несколько понятий:
http://mail.google.com/mail#inbox
, #inbox
- хешированная часть. Давайте назовем его "хэш". поэтому http://mail.google.com/mail
будет нашим "базовым URL".История отслеживания GMail в основном выполняется с использованием трюков, основанных на этом "хэше".
Итак, еще несколько концепций:
Итак, когда вы переходите от http://mail.google.com/mail#inbox
до http://mail.google.com/mail#sent
, страница не обновляется.
Теперь, если GMail должен был получить уведомление о событии, когда хеш изменился, тогда gmail может предпринять действия на основе этого. К сожалению, нет событий DOM, которые могут помочь нам захватить действия истории. Итак, вместо этого (это та часть, которая показывает, как я преодолел проблему), мы запускаем бесконечный цикл, который проверяет изменения хэша. Если он соблюдает изменение, мы обнаруживаем щелчок кнопки "назад" или "вперед" браузера.
В решении этого я сделал удобный инструмент: парсер URL. Он может анализировать параметры GET в URL-адресе, а также параметры, закодированные в Hash. Дайте демо-версию!
Ура!
Об этой проблеме в IE: я не понимал, что это "хэш-решение" не работает на IE (плохой старый разработчик Linux).
Но для IE вы можете использовать скрытый iframe и использовать его свойство "url влияет на историю" для реализации истории. Я знаю, что в этом заявлении отсутствуют детали, но это связано с моим собственным отсутствием опыта работы с IE.
Я попробую это решение и продолжу:)
Я нашел множество ссылок в Интернете, которые делают правильные реализации истории, используя хэш iframes/location. У меня не было терпения, чтобы разобраться в различиях между интерфейсом iframe в разных браузерах.
Думаю, я предпочел jquery plugin. YUI также имеет менеджера по истории.
Ура!