Statechange срабатывает всякий раз, когда я делаю push-state
Я использую историю.JS для обработки кнопки "Назад". В истории.JS statechange срабатывает всякий раз, когда я делаю pushstate. Почему?
3 ответов
по этому обсуждение github, это ожидаемое поведение истории.js
этой pull-запрос утверждает, что изменил историю.js, чтобы быть более встроенным в спецификации W3C.
после попытки выполнить это в течение дня, я, наконец, нашел решение здесь:https://github.com/browserstate/history.js/issues/47#issuecomment-25750285
код довольно чертовски прост, из ссылки цитируется следующее:
когда вы нажимаете свое состояние
History.pushState({
_index: History.getCurrentIndex(),
someData: ...
}, someTitle, someUrl);
а затем в случае привязки
History.Adapter.bind(window, 'statechange', function () {
var currentIndex = History.getCurrentIndex();
var internal = (History.getState().data._index == (currentIndex - 1));
if (!internal) {
// your action
}
});