Statechange срабатывает всякий раз, когда я делаю push-state

Я использую историю.JS для обработки кнопки "Назад". В истории.JS statechange срабатывает всякий раз, когда я делаю pushstate. Почему?

3 ответов


по этому обсуждение github, это ожидаемое поведение истории.js

этой pull-запрос утверждает, что изменил историю.js, чтобы быть более встроенным в спецификации W3C.


хотел добавить, Да это ожидаемое поведение истории.js. В то же время есть


после попытки выполнить это в течение дня, я, наконец, нашел решение здесь: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
    }
});