我遇到了一段我想建模的代码。但是,我只是有几个问题,也许你们可以提供帮助。这是代码:
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 浏览器支持。在整个代码的上下文中,是否需要这些行?
欢迎任何和所有有见地的评论、批评和建议。谢谢!:)