Во-первых, я не могу понять, для чего нужен первый параметр в функции pushState? Что мне на это перейти? Я просто хочу изменить URL-адрес при прокрутке страницы. Я запрашиваю идентификатор текущего элемента в области просмотра, и его идентификатор также должен быть ссылкой в URL-адресе. Это отлично работает с приведенным ниже кодом.
var currentHash,
url;
if (history && history.pushState) {
$(window).scroll(function() {
hash = $('.layer:in-viewport').attr('id');
catHash = $("#"+hash).parent('section').attr('id');
var data = "nothing";
if ( catHash != undefined )
url = "/" + catHash + "/" + hash;
else
url = "/" + hash;
if ( currentHash != hash ) {
window.history.pushState(data, hash, url);
}
currentHash = hash;
});
}
Теперь у меня два вопроса:
1.) Прямо сейчас URL-адрес в адресной строке успешно изменяется, когда я прокручиваю свою страницу. Как я могу запросить URL-адрес / хэш в адресной строке при первоначальной загрузке страницы. Итак, представьте, что теперь у меня есть ссылка типа www.url.com/deep
Я хочу узнать, что такое / deep? Мне просто нужно запросить весь top.location и разделить его на каждый «/»? Я имею в виду, что эти ссылки на самом деле не существуют, так как мне избежать страниц 404 при вызове URL-адреса, которым я управлял с помощью функции pushState?
2.) Как узнать последнее изменение в адресной строке при нажатии кнопки «Назад»? Поэтому я хочу найти /deep
при нажатии кнопки возврата в браузере, чтобы я мог вернуться к этому положению на странице. Я предполагаю, что это, вероятно, работает с popstate, но я не мог понять, как!
Спасибо за помощь!
Обновлять:
window.history.pushState("test", hash, url);
…
$(window).bind('popstate', function(event){
console.log(event.data);
});
Это всегда ноль. Разве это не должно возвращать «тест»?
event.state
неevent.data
- person Quentin   schedule 08.01.2012event.state
, когда яconsole.log(event);
Есть только данные, однако данные всегда равны нулю, и если я пытаюсьevent.state
регистрировать, они тоже всегда равны нулю! - person matt   schedule 08.01.2012$(window).bind('popstate', function(event){
не работает, аwindow.onpopstate = function(event) {
работает! - person matt   schedule 08.01.2012event.originalEvent.state
. - person Fauntleroy   schedule 26.03.2014