Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.08.2011, 12:37
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

Указать обьект для прокрутки
Можно ли каким нибудь образом указать который элемент страницы должен прокручиваться.

Например: окно броузера, в окне есть прокрутка, т.к. там всякие элементы. И есть див, у которого тоже есть прокрутка. Есть возможность указать как нибудь, что при прокрутке колёсика мыши, должно прокручиваться не содержимое броузера, а содержимое дива? Вcя фишка в том, что на див не нужно кликать, он появился например при помощи скрипта, и на нем автоматический фокус.

Последний раз редактировалось AndrejsG, 08.08.2011 в 12:59.
Ответить с цитированием
  #2 (permalink)  
Старый 08.08.2011, 16:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

перехватывай событие.

function mufuncwheel( e ) {
   // тут обрабатывай событие прокрутки колеса мыши.

  e = e || window.event;

  if (e.stopPropagation) e.stopPropagation();
  else e.cancelBubble = true;
  if (e.preventDefault) e.preventDefault();
  else e.returnValue = false;
}

if ( document.addEventListener ) {
  document.addEventListener( 'DOMMouseScroll', mufuncwheel, false );
} else {
  document.attachEvent( 'onDOMMouseScroll', mufuncwheel );
}

Последний раз редактировалось devote, 08.08.2011 в 17:26.
Ответить с цитированием
  #3 (permalink)  
Старый 08.08.2011, 17:01
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

Сообщение от devote Посмотреть сообщение
перехватывай событие.

function mufuncwheel( e ) {
   // тут обрабатывай событие прокрутки колеса мыши.

  e = e || window.event;
  if (!e) {
    e = window.event;
  }
  if (e.stopPropagation) e.stopPropagation();
  else e.cancelBubble = true;
  if (e.preventDefault) e.preventDefault();
  else e.returnValue = false;
}

if ( document.addEventListener ) {
  document.addEventListener( 'DOMMouseScroll', mufuncwheel, false );
} else {
  document.attachEvent( 'onDOMMouseScroll', mufuncwheel );
}
А можете немного прокомментировать свой ответ
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2011, 17:08
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

// Функция для обработки колеса мыши на документе
function mufuncwheel( e ) {
   // тут обрабатывай событие прокрутки колеса мыши.

  // собственно само событие, для ИЕ берем из window
  e = e || window.event;

  // Предотвращаем дальнейшее всплытие события
  if (e.stopPropagation) e.stopPropagation();
  else e.cancelBubble = true;

  // Отменяем действие по умолчанию для события
  if (e.preventDefault) e.preventDefault();
  else e.returnValue = false;
}

// Вешаем событие на документ
if ( document.addEventListener ) {
  document.addEventListener( 'DOMMouseScroll', mufuncwheel, false );
} else {
  document.attachEvent( 'onDOMMouseScroll', mufuncwheel );
}
Ответить с цитированием
  #5 (permalink)  
Старый 08.08.2011, 17:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Сообщение от dmitriymar
а как же событие onmousewheel для ие?

window.onmousewheel = mufuncwheel;
Ответить с цитированием
  #7 (permalink)  
Старый 08.08.2011, 17:24
Интересующийся
Отправить личное сообщение для AndrejsG Посмотреть профиль Найти все сообщения от AndrejsG
 
Регистрация: 05.08.2011
Сообщений: 14

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

ну дальше все проще после строки 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 своего дива
}
Ответить с цитированием
  #9 (permalink)  
Старый 08.08.2011, 17:42
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от devote
document.attachEvent( 'onDOMMouseScroll', mufuncwheel );
вот эта строчка для подключения события onmousewheel в ие ,но и9 поддерживает как addEventListener так и attachEvent. ...так что подключение в 9 не сработает через ветвление у тебя.первым поставь attachEvent вторым addEventListener
Ответить с цитированием
  #10 (permalink)  
Старый 08.08.2011, 17:49
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

dmitriymar,не рассказывай мне сказки... сам везде так делаю как я описал выше и пашет даже в ИЕ5.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для 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