Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.08.2011, 18:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

devote,
я не отрицаю что если добавить window.onmousewheel = mufuncwheel; он будет работать везде. но document.attachEvent-это подключение событий по модели ие ,но вот в ие нет события DOMMouseScroll,есть событие onmousewheel. лучше валидный код изначально писать чем натыкать всё подряд....
Ответить с цитированием
  #12 (permalink)  
Старый 08.08.2011, 18:27
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

Если вас не затруднит, можете подвести итог и написать как это выглядеть должно. Я был бы очень признатален.
Ответить с цитированием
  #13 (permalink)  
Старый 08.08.2011, 18:32
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

// Функция для обработки колеса мыши на документе
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 );
}
Ответить с цитированием
  #14 (permalink)  
Старый 08.08.2011, 18:34
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

А в функцию в качестве переменной "е" что нужно задавать?
Ответить с цитированием
  #15 (permalink)  
Старый 08.08.2011, 18:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ничего, туда DOM свое событие засунет... все что тебе нужно это обрабатывать твой див там где я описал... остального ничего не надо... самому вызывать эту функцию не надо.
Ответить с цитированием
  #16 (permalink)  
Старый 08.08.2011, 18:46
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

if ( document.attachEvent ) {
  document.attachEvent ( 'onmousewheel', mufuncwheel, false );
} else {
  document.addEventListener("DOMMouseScroll", mufuncwheel, false);;
}
Ответить с цитированием
  #17 (permalink)  
Старый 09.08.2011, 11:05
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

На сколько я понимаю я могу сделать так, когда заканчивается финкция где создается див, я проверяю

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 сделал там алерт, ничего не вышло.
Ответить с цитированием
  #18 (permalink)  
Старый 09.08.2011, 11:18
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

еп.

// Функция для обработки колеса мыши на документе
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>
Ответить с цитированием
  #19 (permalink)  
Старый 09.08.2011, 18:59
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

Большое спасибо всё работает ) только последний вопрос, а при вызове mufuncwheel я могу в неё передать переменную (ид дива к которому применять прокрутку)?
Ответить с цитированием
  #20 (permalink)  
Старый 09.08.2011, 19:43
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от AndrejsG
а при вызове mufuncwheel я могу в неё передать переменную (ид дива к которому применять прокрутку)?
нет, передать в нее нельзя, но можешь в ней юзать внешнюю переменную созданную за пределами функции но не за пределами родителя.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Как указать title при открытии окна через window.open для chrome milvic Opera, Safari и др. 4 15.01.2011 15:18
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31