Я использую API истории, чтобы отправить новый URL-адрес на веб-страницу без перезагрузки. У меня есть несколько кнопок, которые имеют разные функции.
Мой скрипт теперь работает почти без проблем. Когда я нажимаю кнопку, что-то происходит, и когда я возвращаюсь назад, скрипт запускает прослушиватель событий без перезагрузки страницы.
Однако, когда я теперь нажимаю кнопку вперед, я хочу идти вперед. URL-адрес правильно изменен на следующий, но прослушиватель событий по-прежнему срабатывает, как если бы была нажата кнопка «Назад».
Пример:
index1.html
- нажмите кнопку →
index2.html
- нажмите кнопку →
index3.html
- нажата кнопка возврата →
index2.html
- нажата кнопка «вперед» → URL-адрес теперь
index3.html
, но содержаниеindex1.html
Я предполагаю, что это потому, что у меня есть слушатель, который слушает popstate
, что происходит при нажатии кнопок «назад» и «вперед». Как я могу отличить, какая кнопка была нажата?
Это та часть, которая связывает слушателя:
if (window.history && window.history.pushState) {
$(window).unbind('popstate');
$(window).bind('popstate', function (e) {
clearOverlays();
var url = URL
$.ajax ( {
url : url
}).done ( function ( data ) {
console.log(data);
});
});
}
state
для хранения состояния, к которому переходит пользователь. Похоже, вы в настоящее время сохраняете его в глобальной переменнойURL
? P.S. Вы должны использоватьon
/off
вместоbind
/unbind
в современных версиях jQuery. - person CodingIntrigue   schedule 19.05.2014state
, которую вы передали в pushState:history.pushState(**{ status: "OpenFile" }**, "Open", "irrelevanturl.html");
- person CodingIntrigue   schedule 19.05.2014