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