Так что теперь, когда HTML5 вводит history.pushState
для изменения истории браузеров, веб-сайты начинают использовать это в сочетании с Ajax вместо изменения идентификатора фрагмента URL.
К сожалению, это означает, что эти вызовы больше не могут быть обнаружены onhashchange
.
Мой вопрос: Есть ли надежный способ (взлом?;)), Чтобы определить, когда веб-сайт использует history.pushState
? В спецификации ничего не говорится о вызываемых событиях (по крайней мере, я ничего не смог найти).
Я попытался создать фасад и заменил window.history
своим собственным объектом JavaScript, но это никак не повлияло.
Дальнейшее объяснение: Я разрабатываю дополнение для Firefox, которое должно обнаруживать эти изменения и действовать соответствующим образом.
Я знаю, что несколько дней назад был похожий вопрос, который спрашивал, будет ли эффективно прослушивание некоторых событий DOM , но я бы не стал полагаться на это, потому что эти события могут быть сгенерированы по разным причинам.
Обновление:
Вот jsfiddle (используйте Firefox 4 или Chrome 8), который показывает, что onpopstate
не запускается при вызове pushState
(или я делаю что-то не так? Не стесняйтесь улучшать это!).
Обновление 2:
Другая (побочная) проблема заключается в том, что window.location
не обновляется при использовании pushState
(но я думаю, что я уже читал об этом здесь на SO, я думаю).