Я наткнулся на кусок кода, который хотел бы смоделировать. Однако у меня есть только несколько вопросов, и, возможно, вы, ребята, можете помочь. Вот код:
function addEvent( brw_obj, type, func ) {
if (brw_obj.addEventListener) { // all browsers except IE < v9
brw_obj.addEventListener( type, func, false );
} else if (brw_obj.attachEvent) { // IE only for v < v9
brw_obj["e"+type+func] = func;
brw_obj[type+func] = function() {
brw_obj["e"+type+func]( window.event );
}
brw_obj.attachEvent( "on"+type, brw_obj[type+func] );
}
/* else if (brw_obj.captureEvents) {
brw_obj.captureEvents(Event.CLICK); // only works with FF < v3!
}
*/
}
Теперь я немного понимаю, что код проверяет addEventListener или attachEvent; но что означают следующие строки в деталях? Я не видел javascript, написанного так:
brw_obj["e"+type+func] = func;
brw_obj[type+func] = function() {
brw_obj["e"+type+func]( window.event );
}
brw_obj.attachEvent( "on"+type, brw_obj[type+func] );
Кроме того, является ли использование этого кода хорошим способом обнаружения браузера или объекта?
Я пишу скрипт и должен быть уверен, что он работает во всех современных браузерах, а также в старых. Насколько я понимаю, большинство современных браузеров поддерживают addEventListener, а IE поддерживает attachEvent. Что я не уверен, так это если старые браузеры поддерживают.
Что касается закомментированных строк:
/* else if (brw_obj.captureEvents) {
brw_obj.captureEvents(Event.CLICK); // only works with FF
}
*/
Я где-то читал, что captureEvents поддерживается только старыми браузерами Firefox. Нужны ли эти строки в контексте всего кода?
Любые проницательные комментарии, критика и советы приветствуются. Спасибо! :)