Итак, теперь, когда 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, я думаю).
history
объект. Это может быть ненужным в этом случае.