Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Нужна проверка поддержки события "DOMMouseScroll" (https://javascript.ru/forum/events/6056-nuzhna-proverka-podderzhki-sobytiya-dommousescroll.html)

Kolyaj 11.11.2009 11:03

А некрасивого чего? Если одни и те же действия должны выполнятся при возникновении нескольких событий. Делать несколько одинаковых функций?

B~Vladi 11.11.2009 13:49

Некрасиво то, что мы пытаемся прикрутить обработчик на событие, которого не существует.

Denisko-Redisko 14.11.2009 15:29

И кроме того будет очень весело если FF начнет поддерживать onmousewheel.

B~Vladi 14.11.2009 21:38

Можно поступить так... Создаём элемент, вешаем на него обработчик для onmousewheel, программно генерим событие и регистрируем это. После генерации проверяем - произошло или нет, а потом уже делаем соответствующие выводы;)

Denisko-Redisko 27.11.2009 16:06

Да, пожалуй это самый правильный способ :) Спасибо.

Denisko-Redisko 02.01.2012 04:52

Вроде нашел короткое решение. В Gecko DOMMouseScroll является частью интерфейса nsIDOMMouseScrollEvent. Наличие этого интерфейса проверяется так:
Components.interfaces.nsIDOMMouseScrollEvent

Теперь тот участок скрипта выглядит так:
...
    //
    // Gecko использует событие "DOMMouseScroll" вместо "mousewheel"
    // Наличие этого интерфейса в Gecko можно проверить так: Components.interfaces.nsIDOMMouseScrollEvent
    //

    ff, mousewheel = {
        mousewheel : (ff = window.Components) && 
            (ff = ff.interfaces) && 
            (ff = ff.nsIDOMMouseScrollEvent ) ? "DOMMouseScroll" : null
    },

devote 02.01.2012 16:32

Цитата:

Сообщение от B~Vladi
Тебе спасибо! Раньше я вешал обработчик на оба события, но твой топ заставил меня найти нормальное решение! Буду сам его юзать

Это не нормальное решение, так как можно вызвать таким макаром и самопальное событие.

B~Vladi 02.01.2012 16:46

Цитата:

Сообщение от devote
так как можно вызвать таким макаром и самопальное событие.

Код в студию!

devote 02.01.2012 16:54

B~Vladi,
оно у тебя якобы работает лишь по простой причине, то что ты допустил ошибку в коде. Строка 12 вместо onmousewheel нужно писать mousewheel
а так ты не пытаешься вызвать событие на которое повесил обработчик в браузерах поддерживающих addEvenetListener

devote 02.01.2012 16:55

попробуй написать брехню вместо onmousewheel и оно у тебя также сработает. Тоесть ты просто вызовешь собственное событие, которое не обязательно должно существовать в браузере


Часовой пояс GMT +3, время: 00:19.