Как получать уведомления об изменениях истории через history.pushState?

Так что теперь, когда 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, я думаю).

139
задан pnuts 26 November 2015 в 14:15
поделиться