Я использую событие onhashchange
javascript, чтобы показать пользователю последовательность «экранов» без перезагрузки страницы для каждого экрана.При размещении этой страницы внутри iFrame событие hashchange не запускается IE9, и window.location.href не обновляется должным образом.
Что я ожидаю: Всякий раз, когда пользователь нажимает "продолжитьmsgstr "чтобы перейти к другому экрану, часть хеша URL будет изменена.Когда используются кнопки браузера «назад» и «вперед», браузер изменяет хэш.Это перехватывается обработчиком события onhashchange в javascript, и отображается правильное содержимое.
Что я наблюдаю вместо этого: Поведение во всех браузерах, поддерживающих событие onhashchange (включая IE9), таковоожидается.Однако, когда рассматриваемая страница загружается внутри iFrame, поведение изменяется в IE9.Вот что происходит, когда я нажимаю кнопку возврата браузера в IE9:
- Событие hashchange не запускается.
- window.location.href и window.location.hash остаются такими же, какперед нажатием кнопки «назад»
- Если я щелкну правой кнопкой мыши по iFrame и увижу свойства iFrame, URL-адрес будет показан с измененным хешем.Т.е. URL в окне свойств не совпадает с window.location.href
Пример игрушки: Поскольку другие сообщают, что такого поведения не видят, я создал здесь пример игрушки: http://jonemo.de/stuff/ie9iframe/test.html. Нажмите state1
, затем нажмите state2
, нажмите кнопку назад вашего браузера.Current state of iFrame
должен читать state1
, но в моем IE9 он читает state2
после этой последовательности действий.Мой IE - версия 9.0.8112.16421, это нормальная версия выпуска.
Как я могу обнаружить использование кнопки «Назад» на странице внутри iFrame в IE9?Страницы, содержащие iFrame и внутри iFrame, могут находиться в разных доменах.Я полностью контролирую страницу в iFrame и могу разместить произвольный Javascript на странице, содержащей iFrame.