devote,
я не отрицаю что если добавить window.onmousewheel = mufuncwheel; он будет работать везде. но document.attachEvent-это подключение событий по модели ие ,но вот в ие нет события DOMMouseScroll,есть событие onmousewheel. лучше валидный код изначально писать чем натыкать всё подряд.... |
Если вас не затруднит, можете подвести итог и написать как это выглядеть должно. Я был бы очень признатален.
|
// Функция для обработки колеса мыши на документе function mufuncwheel( e ) { // тут обрабатывай событие прокрутки колеса мыши. // собственно само событие, для ИЕ берем из window e = e || window.event; if ( e.wheelDelta ) { wheelDelta = e.wheelDelta / 120; } else if ( e.detail ) { wheelDelta = -e.detail / 3; } if ( wheelDelta < 0 ) { // мышь крутанули вниз // тут можешь прибавлять значение scrollTop своего дива } else if ( wheelDelta > 0 ) { // мышь крутанули вверх // тут можешь уменьшать значение scrollTop своего дива } // Предотвращаем дальнейшее всплытие события if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; // Отменяем действие по умолчанию для события if (e.preventDefault) e.preventDefault(); else e.returnValue = false; } // Вешаем событие на документ if ( document.attachEvent ) { document.attachEvent( 'onDOMMouseScroll', mufuncwheel ); } else { document.addEventListener( 'DOMMouseScroll', mufuncwheel, false ); } |
А в функцию в качестве переменной "е" что нужно задавать?
|
ничего, туда DOM свое событие засунет... все что тебе нужно это обрабатывать твой див там где я описал... остального ничего не надо... самому вызывать эту функцию не надо.
|
if ( document.attachEvent ) { document.attachEvent ( 'onmousewheel', mufuncwheel, false ); } else { document.addEventListener("DOMMouseScroll", mufuncwheel, false);; } |
На сколько я понимаю я могу сделать так, когда заканчивается финкция где создается див, я проверяю
if ( document.attachEvent ) { document.attachEvent ( 'onmousewheel', mufuncwheel, false ); } else { document.addEventListener("DOMMouseScroll", mufuncwheel, false);; } это в свою очередб вызывает функцию mufuncwheel в которой я выставляю if ( wheelDelta < 0 ) { // мышь крутанули вниз // тут можешь прибавлять значение scrollTop своего дива } else if ( wheelDelta > 0 ) { // мышь крутанули вверх // тут можешь уменьшать значение scrollTop своего дива } почему то у меня не работает mufuncwheel сделал там алерт, ничего не вышло. |
еп.
// Функция для обработки колеса мыши на документе function mufuncwheel( e ) { // тут обрабатывай событие прокрутки колеса мыши. // собственно само событие, для ИЕ берем из window e = e || window.event; if ( e.wheelDelta ) { wheelDelta = e.wheelDelta / 120; } else if ( e.detail ) { wheelDelta = -e.detail / 3; } var elem = document.getElementById('my_div'); if ( wheelDelta < 0 ) { // мышь крутанули вниз elem.scrollTop += 10; // тут можешь прибавлять значение scrollTop своего дива } else if ( wheelDelta > 0 ) { // мышь крутанули вверх elem.scrollTop -= 10; // тут можешь уменьшать значение scrollTop своего дива } // Предотвращаем дальнейшее всплытие события if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; // Отменяем действие по умолчанию для события if (e.preventDefault) e.preventDefault(); else e.returnValue = false; } window.onload = function() { // Вешаем событие на документ if ( document.attachEvent ) { document.attachEvent( 'onmousewheel', mufuncwheel ); } else { document.addEventListener( 'DOMMouseScroll', mufuncwheel, false ); } } <html> <body> <div id="my_div" style="width: 200px; height: 200px; overflow: auto;">многа контента, тут очень много что даже появился скролл</div> </body> </html> |
Большое спасибо всё работает ) только последний вопрос, а при вызове mufuncwheel я могу в неё передать переменную (ид дива к которому применять прокрутку)?
|
Цитата:
|
Часовой пояс GMT +3, время: 10:13. |