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

Сообщение от B~Vladi
В jQuery это обертка, кури исходники. Там же как пространства имен в именах событий.
Не ужто так сложно прочесть стандарты. Я не сказал что это как сделано в jQuery я сказал что по аналогии, тоесть я хочу проверить есть ли в браузере событие допустим "TratataEvent". идем твоим способом:

function test( event ) {
    var status = false,
        elem = document.createElement('div');

    document.body.appendChild( elem );

    elem.addEventListener( event, function() {
        status = true;
    }, false);

    var evt=document.createEvent('HTMLEvents');
    evt.initEvent( event ,true, true );

    elem.dispatchEvent( evt );

    document.body.removeChild( elem );

    return status;
}

alert( test( 'TratataEvent' ) );
alert( test( 'click' ) );
alert( test( 'DOMMouseScroll' ) );
alert( test( 'onmousewheel' ) );
alert( test( 'mousewheel' ) );


Все эти тесты всегда выведут значение true

Сообщение от B~Vladi
В jQuery это обертка, кури исходники.
Прокурены давно, и я не ставлю в пример jQuery, говорю что стандартные работают по тому же принципу.

А для ИЕ достаточно сделать такую проверку:
function test( event ) {
    var status = false,
        elem = document.createElement('div');

    document.body.appendChild( elem );

    try {
        elem.fireEvent( event, document.createEventObject() );
        status = true;
    } catch ( _ ) {
    }

    document.body.removeChild( elem );

    return status;
}

alert( test( 'onmousewheel' ) );

alert( test( 'onblahtest' ) );

Последний раз редактировалось devote, 02.01.2012 в 18:38.
Ответить с цитированием