Я понятия не имею, как мне вообще называть эту проблему… название вопроса вообще не имеет никакого смысла, я знаю!
Следующий случай: у меня есть одностраничный макет, где пользователипрокрутите вниз.У меня есть разделы .layer
, которые, когда внутри области просмотра должны изменить хэш в адресной строке на id
.Так, например, .layer#one
находится внутри области просмотра, URL-адрес в адресной строке выглядит следующим образом: www.whever.com/#!/one
$(window).scroll(function() {
hash = $('.layer:in-viewport').attr('id');
top.location.hash = "!/" + hash;
});
Это прекрасно работает и именно так, как я этого хочу.Причина, по которой у меня есть этот синтаксис с !/
, заключается в том, что если бы я просто установил местоположение на hash
, только поведение прокрутки было бы ошибочным, потому что браузер пытается придерживаться позиции хеша.
Теперь проблема в том, что я хочу, чтобы кнопка возврата истории браузера работала!Обычно это было бы довольно просто с функцией hashchange
, которая поставляется с jQuery, например так:
$(window).bind( 'hashchange', function( event ) {
//query the hash in the addressbar and jump to its position on the site
});
Единственная проблема, с которой я столкнулся, заключается в том, что функция hashchange также будет запускаться, если хеш изменяетсяпрокрутки.Таким образом, он снова будет прыгать или придерживаться текущей позиции в браузере.Любая идея, как я мог решить это?Я мог бы, вероятно, убрать хэш-обмен во время прокрутки, верно?Но разве это лучшее решение?