Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2011, 11:56
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Как удалить preventDefault();
Замораживаю scroll окна следующим скриптом:
var prevent = function(event) {
    window.scrollTo(0, 0);
    event ? event.preventDefault() : window.event.returnValue = false;
};
 
if(window.addEventListener) {
    var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
        i = array.length;
 
    while(i--) {
        window.addEventListener(array[i], prevent, false);
    }
}
else window.onmousewheel = document.onmousewheel = window.onscroll = prevent;


Пытаюсь разморозить следующим:

if(window.addEventListener) {
    var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
        i = array.length;
 
    while(i--) {
        window.removeEventListener(array[i], prevent, false);
    }
}
else window.onmousewheel = document.onmousewheel = window.onscroll = null;


Работае в IE без проблем, в Opere не хочет.
Подскажите как решить данную проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2011, 16:41
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Есить добрые люди на этом свете или нет?
Уже два дня колупаюсь, ничего не получается(((((
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2011, 18:02
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

если не получается заморозить скролл, пробуй по -другому. через CSS, к примеру
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2011, 18:11
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Дело в том, что замораживает он отлично, а вот разморозить его потом проблема.
Вот этот код Опера видит отлично, и замораживается и размораживается скролл:
document.onmousewheel = function(e){ e.preventDefault(); }

а этот размораживает:
document.onmousewheel = null;

Но проблема в том, что IE не понимает этот код((

P.S. "В javascripte же нет неришимых задач... ". Хочется в это верить))

Последний раз редактировалось nematod, 18.09.2011 в 18:13.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2011, 19:30
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

function prevent (e) {
  e ? e.preventDefault() : window.event.returnValue = false;
}

  //  Запрещаем прокрутку страницы колесиком мышки
if (document.onmousewheel === undefined) {
  document.addEventListener('DOMMouseScroll', prevent, false);
} else {
  document.onmousewheel = prevent;
}

  //  Снимаем запрет
if (document.onmousewheel === undefined) {
  document.removeEventListener('DOMMouseScroll', prevent, false);
} else {
  document.onmousewheel = null;
}
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2011, 19:50
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от nematod
Но проблема в том, что IE не понимает этот код((
потому что для IE нужно window

А для совсем старых версий браузеров можно еще добавить:
var delta = 0;

// IE/Opera
if (event.wheelDelta) {
     delta = event.wheelDelta/120;
     if (window.opera) delta = -delta;
}
// FF
else if (event.detail) {
      delta = -event.detail/3;
}

// в IE9+ добавили обработчик wheel
// и в обработчике проверять delta на значение больше нуля

Последний раз редактировалось monolithed, 18.09.2011 в 20:05.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2011, 20:01
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Сделал вообще вот так:
//Запрещаю прокрутку
var prevent = function(event){ event ? event.preventDefault() : window.event.returnValue = false;};
window.onmousewheel = document.onmousewheel = window.onscroll = prevent;

//Снимаю запрет
window.onmousewheel = document.onmousewheel = window.onscroll = null;


Работает и в Опере и в IE. В других ещё не пробовал.
Ответить с цитированием
  #8 (permalink)  
Старый 18.09.2011, 20:25
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Cледующий пост будет:

Ааа! Как удалить preventDefault()? Это не работает в Firefox.
Ответить с цитированием
  #9 (permalink)  
Старый 18.09.2011, 21:22
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Сообщение от Magneto Посмотреть сообщение
Cледующий пост будет:

Ааа! Как удалить preventDefault()? Это не работает в Firefox.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить таблицу созданную в JS? konstantinopol Общие вопросы Javascript 9 10.09.2011 10:55
как удалить элемент который идет после элемента .form? FRIE jQuery 2 03.06.2011 14:35
Как можно удалить динамически созданный элемент Арсений Элементы интерфейса 18 08.07.2010 12:56
Как удалить массив? SunYang Общие вопросы Javascript 14 05.02.2010 14:31
Как удалить все пустые элементы UL smashercosmo Events/DOM/Window 13 25.02.2009 09:03