| 
		
			Сообщение от 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' ) );