AmDmKo
@AmDmKo
Звукорежиссер

Запретить Скролл мышки в DIV блоке?

Доброе утро Ребятки!

Будьте добры, подскажите советом

На главной странице сайта имеется виджет Чат. И вот при прокрутке сайта - попадая на виджет чат, начинаем долго листать скролом сам чат, а не сайт.
Посетила идея - убрать скролл мышкой в определенном DIV блоке - НО при этом оставить "правую полосу прокрутки".

Долго копаясь в интернете нашел данный Java-скрипт:
<html>
<head>
<script>
function disableWheelScroll(){
if (document.body.addEventListener) document.body.addEventListener('DOMMouseScroll', blockWheel, false);
document.body.onmousewheel = blockWheel;
}
function blockWheel(event){
if (!event) event = window.event;
if (event.stopPropagation) event.stopPropagation();
else event.cancelBubble = true;
if(event.preventDefault) event.preventDefault();
else event.returnValue = false;
}
</script>
</head>
<body>
... контент ...
<script>disableWheelScroll();</script>
</body>
</html>

Скрипт блокирует колесико мышки для всего документа. 
Если хочется запретить прокрутку для конкретного элемента, то document.body меняем на document.getElementById.


Так вот всю страницу он то блокирует) уже проверял, а теперь пробую понять о чем он имел ввиду под:
Если хочется запретить прокрутку для конкретного элемента, то document.body меняем на document.getElementById.

Пробовал так:
<html>
<head>
<script>
function disableWheelScroll(){
if (document.getElementById.addEventListener) document.getElementById.addEventListener('МОЙ ДИВ БЛОК', blockWheel, false);
<b>document.getElementById.</b>onmousewheel = blockWheel;
}
function blockWheel(event){
if (!event) event = window.event;
if (event.stopPropagation) event.stopPropagation();
else event.cancelBubble = true;
if(event.preventDefault) event.preventDefault();
else event.returnValue = false;
}
</script>
</head>
<body>
... контент ...
<script>disableWheelScroll();</script>
</body>
</html>


Но как понял - что-то не то)
Будьте добры, ткните носом где затупил...
  • Вопрос задан
  • 3473 просмотра
Решения вопроса 1
AmDmKo
@AmDmKo Автор вопроса
Звукорежиссер
Спасибо за подсказку!
Увы, почему-то, не получается заблокировать - скролл виджет-чата.
Немог бы кто знающий подсказать в чем просчет?)
быть может способ не тот, или есть другие варианты заблокировать скролл определенного див блока?)
Вариант 1
<script>
function disableWheelScroll(){
if (document.getElementsByClassName.addEventListener) document.getElementById('shoutbox').addEventListener('DOMMouseScroll', blockWheel, false);
document.getElementsByClassName.onmousewheel = blockWheel;
}
function blockWheel(event){
if (!event) event = window.event;
if (event.stopPropagation) event.stopPropagation();
else event.cancelBubble = true;
if(event.preventDefault) event.preventDefault();
else event.returnValue = false;
}
</script>

Вариант 2
<script>
function disableWheelScroll(){
if (document.getElementsByClassName.addEventListener) document.getElementsByClassName('scroll-wrap').addEventListener('DOMMouseScroll', blockWheel, false);
document.getElementsByClassName.onmousewheel = blockWheel;
}
function blockWheel(event){
if (!event) event = window.event;
if (event.stopPropagation) event.stopPropagation();
else event.cancelBubble = true;
if(event.preventDefault) event.preventDefault();
else event.returnValue = false;
}
</script>


Блок самого Чата
<div class="scroll-wrap"><div class="scroll-pane"><div id="shoutbox"></div></div></div>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@amatory10
где getElementById нужно в скобках вставить id элемента т.е. document.getElementById('id');
где как вы указали 'МОЙ ДИВ БЛОК' относительно оригинала вы ничего не меняете.
Ответ написан
Комментировать
Ivanq
@Ivanq
Знаю php, js, html, css
Яву не знаете вообще.
В JS есть функция document.getElementById("myid"), которой передается ID, как в примере. А там, где написано 'DOMMouseScroll' - это название события прокрутки мыши. Ох, что же с вами делать...
if (document.body.addEventListener) document.getElementById('мой див (сюда вставить id) ').addEventListener('DOMMouseScroll', blockWheel, false);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы