Как предотвратить событие scroll при смене hash-тега у странички.

интернет программирование html JavaScript jQuery

Задача такова, есть страничка у которой я скриптом меняю hash.
Суть задачи, как предотвратить скрол к якорю ссылки?
Вот код для наглядности:

<style type="text/css">
.rasporka {
height: 1500px;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
// пробовал так, но не работает.
jQuery(document).ready(function($) {
window.addEventListener( 'scroll', scrollFunc, false);
function scrollFunc(e) {
e = e || window.event;
console.log(e.type);
e.preventDefault();
e.stopPropagation();
return false;
}
window.location.hash = 'scroll';
});
</script>
<div class="b-div">
<div class="rasporka"></div>
<a name="scroll">scroll</a>
</div>


Примечание:
Ell Rion, Ваш способ не понятен.

Примечание:
romani4, пока что лучший способ. Но остаются косяки в виде прыгающего скролбара.
Ответы:
<a name="scroll" onclick="return false;">scroll</a>
Обработку события scroll браузером никак не остановить(см. ссылку):
Cancelable  No
function mySetHash(hash){
hash = hash.replace( /^#/, '' );
var fx, node = $( '#' + hash );
if ( node.length ) {
 node.attr( 'id', '' );
 fx = $( '<div></div>' )
         .css({
             position:'absolute',
             visibility:'hidden',
             top: $(document).scrollTop() + 'px'
         })
         .attr( 'id', hash )
         .appendTo( document.body );
}
document.location.hash = hash;
if ( node.length ) {
 fx.remove();
 node.attr( 'id', hash );
}
}
#UPD1
Ну что в этом элементарном коде может быть непонятно?хХ
эта функция которая ставит нужный хэш без скролла. Достигается это за счёт того, что прежде чем поставить location.hash мы ищем соответствующий элемент с id совпадающим с хэшем, к которому браузер захочет проскролить, запоминаем его в node и удаляем у него этот id. Но в некоторых браузерах этого мало, так как они держат метку уже в памяти, так что мы создаём фиктивный невидимый див с таким id, абсолютным позиционированием и положением равным текущему скроллу, так что браузер скроллит к нему(а точнее скролл остаётся на месте) когда меняем хэш, ну а потом мы всё возвращаем на круги своя.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.