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