Запретить скролл мышью в DIV

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 5 декабря 2015 в 09:24
Доброе утро Ребятки! v

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

На главной странице сайта имеется виджет Чат. И вот при прокрутке сайта — попадая на виджет чат, начинаем долго листать скролом сам чат, а не сайт.
Посетила идея — убрать скролл мышкой в определенном 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);
document.getElementById.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>
Но как понял — что-то не то)
Будьте добры, ткните носом где затупил… facepalm
#2 5 декабря 2015 в 11:03
document.getElementById('id вашего блока')
#3 5 декабря 2015 в 11:56
Спасибо за подсказку!

Увы, почему-то, не получается заблокировать — скролл виджет-чата.

Немог бы кто знающий подсказать в чем просчет?)

быть может способ не тот, или есть другие варианты заблокировать скролл определенного див блока?) zst

Вариант 1
  1.  
  2. <script>
  3. function disableWheelScroll(){
  4. if (document.getElementsByClassName.addEventListener) document.getElementById('shoutbox').addEventListener('DOMMouseScroll', blockWheel, false);
  5. document.getElementsByClassName.onmousewheel = blockWheel;
  6. }
  7. function blockWheel(event){
  8. if (!event) event = window.event;
  9. if (event.stopPropagation) event.stopPropagation();
  10. else event.cancelBubble = true;
  11. if(event.preventDefault) event.preventDefault();
  12. else event.returnValue = false;
  13. }
  14. </script>
  15.  
Вариант 2
  1.  
  2. <script>
  3. function disableWheelScroll(){
  4. if (document.getElementsByClassName.addEventListener) document.getElementsByClassName('scroll-wrap').addEventListener('DOMMouseScroll', blockWheel, false);
  5. document.getElementsByClassName.onmousewheel = blockWheel;
  6. }
  7. function blockWheel(event){
  8. if (!event) event = window.event;
  9. if (event.stopPropagation) event.stopPropagation();
  10. else event.cancelBubble = true;
  11. if(event.preventDefault) event.preventDefault();
  12. else event.returnValue = false;
  13. }
  14. </script>
  15.  
Блок самого Чата
  1. <div class="scroll-wrap"><div class="scroll-pane"><div id="shoutbox"></div></div></div>
#4 5 декабря 2015 в 12:25
А overflow:hidden; не работает?
#5 5 декабря 2015 в 12:30


А overflow:hidden; не работает?

tokarev
Благодарю за совет, попробовал. Немного не то, хотелось что бы полоса прокрутки оставалась, как и возможность ею воспользоваться. sad
#6 5 декабря 2015 в 12:33
div {overflow:hidden;}
div:hover {overflow-y:scroll;}

Скроллбар будет только при наведенном курсоре
#7 5 декабря 2015 в 12:44


div {overflow:hidden;}
div:hover {overflow-y:scroll;}

Скроллбар будет только при наведенном курсоре

tokarev

Благодарю, погляжу и этот вариант.
А так уже подсказали подходящий вариант crazy

  1. <!doctype html>
  2. <html>
  3. <meta charset="utf-8">
  4. <body>
  5. <div id="div_1">
  6. <h1>Hello</h1>
  7. <h1>Hello</h1>
  8. <h1>Hello</h1>
  9. <h1>Hello</h1>
  10. <h1>Hello</h1>
  11. <h1>Hello</h1>
  12. <h1>Hello</h1>
  13. <h1>Hello</h1>
  14. <h1>Hello</h1>
  15. <h1>Hello</h1>
  16. <h1>Hello</h1>
  17. <h1>Hello</h1>
  18. <h1>Hello</h1>
  19. <h1>Hello</h1>
  20. <h1>Hello</h1>
  21. <h1>Hello</h1>
  22. <h1>Hello</h1>
  23. <h1>Hello</h1>
  24. <h1>Hello</h1>
  25. <h1>Hello</h1>
  26. </div>
  27. <script>
  28. (function() {
  29. document.getElementById('div_1').addEventListener('wheel', blockWheel);
  30. function blockWheel(event) {
  31. event.preventDefault();
  32. }
  33. })()
  34. </script>
  35. </body>
  36. </html>
plnkr.co/edit/ZxjArlCTCdgjC9Oi1A87?p=preview
#8 5 декабря 2015 в 12:48

Увы, почему-то, не получается заблокировать — скролл виджет-чата.

AmDmKo
AmDmKo,
вам следует для начала разобраться с командами которыми оперируете и включить мозг.Если для ф-ции getElementById() требуется параметр, в данном случае индетификатор вашего блока, то для getElementsByClassName() тоже.А у вас не поймёшь.в одном месте есть, в другом нет.Будьте внимательней.
P.S. И что то в примере по этой ссылке plnkr.co/edit/ZxjArlCTCdgjC9Oi1A87?p=preview скроллинг не работает корректно.
#9 5 декабря 2015 в 19:01


Увы, почему-то, не получается заблокировать — скролл виджет-чата.

AmDmKo
AmDmKo,
вам следует для начала разобраться с командами которыми оперируете и включить мозг.Если для ф-ции getElementById() требуется параметр, в данном случае индетификатор вашего блока, то для getElementsByClassName() тоже.А у вас не поймёшь.в одном месте есть, в другом нет.Будьте внимательней.
P.S. И что то в примере по этой ссылке plnkr.co/edit/ZxjArlCTCdgjC9Oi1A87?p=preview скроллинг не работает корректно.

Lora

Спасибо за ответ stuk
В тех двух примерах я экспериментировал с ID и Clases.

А так по сути — вот рабочий и меня устраивающий вариант.

plnkr.co/edit/ZxjArlCTCdgjC9Oi1A87?p=preview

  1. <!doctype html>
  2. <html>
  3. <meta charset="utf-8">
  4. <style>
  5. #div_1 {
  6. height: 200px;
  7. width: 200px;
  8. border: 1px solid black;
  9. overflow: scroll;
  10. }
  11. </style>
  12.  
  13. <body>
  14. <h1>Hello</h1>
  15. <h1>Hello</h1>
  16. <h1>Hello</h1>
  17. <h1>Hello</h1>
  18. <div id="div_1">
  19. <h1>Hello</h1>
  20. <h1>Hello</h1>
  21. <h1>Hello</h1>
  22. <h1>Hello</h1>
  23. </div>
  24. <h1>Hello</h1>
  25. <h1>Hello</h1>
  26. <h1>Hello</h1>
  27. <h1>Hello</h1>
  28. <h1>Hello</h1>
  29. <h1>Hello</h1>
  30. <h1>Hello</h1>
  31. <h1>Hello</h1>
  32. <h1>Hello</h1>
  33. <h1>Hello</h1>
  34. <h1>Hello</h1>
  35. <h1>Hello</h1>
  36. <h1>Hello</h1>
  37. <h1>Hello</h1>
  38. <h1>Hello</h1>
  39. <h1>Hello</h1>
  40. <script>
  41. (function() {
  42. document.body.addEventListener('wheel', contScroll);
  43. document.getElementById('div_1').addEventListener('wheel', blockWheel);
  44.  
  45. function blockWheel(event) {
  46. event.preventDefault();
  47. }
  48.  
  49. function contScroll(event) {
  50. if (event.wheelDelta === -120) {
  51. this.scrollTop += 53;
  52. } else {
  53. this.scrollTop -= 53;
  54. }
  55. }
  56. })()
  57. </script>
  58. </body>
  59.  
  60. </html>
Всем, спасибо!)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.