Javascript addEventListener代码段翻译和跨浏览器检测的使用
我遇到了一段我想建模的代码。不过,我有几个问题,也许你们可以帮忙。代码如下:Javascript addEventListener代码段翻译和跨浏览器检测的使用,javascript,cross-browser,addeventlistener,attachevent,Javascript,Cross Browser,Addeventlistener,Attachevent,我遇到了一段我想建模的代码。不过,我有几个问题,也许你们可以帮忙。代码如下: 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 &
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,IE支持attachEvent。我不确定的是,较旧的浏览器是否支持这两种功能
就注释掉的行而言:
/* else if (brw_obj.captureEvents) {
brw_obj.captureEvents(Event.CLICK); // only works with FF
}
*/
我在某个地方读到,captureEvents只受较旧的Firefox浏览器支持。在整个代码的上下文中,是否需要这些行
欢迎任何有见地的评论、批评和建议。谢谢 我已经使用try/catch方法有一段时间了,对于我当前的项目来说,它一直很好。请查看以下代码段:
var request;
try {
request = new XMLHttpRequest(); // standard
}
catch (e) {
request = new ActiveXObject("Microsoft.XMLHTTP"); // workaround
}
上面的示例应该适用于所有浏览器,返回到InternetExplorer5.0;当然,你不可能支持所有古老的浏览器,但是嘿,Mosaic并没有说JavaScript
因此,您可以尝试调用addEventListener,如果发现错误,则可以调用attachEvent
只有我的0,02美元
我最近也遇到了addEventListener问题,以下是我目前的处理方法:
function addEventListener(target, type, listener) {
if (target) {
if (target.addEventListener) {
target.addEventListener(type, listener, false);
}
else if (target.attachEvent) {
target.attachEvent("on" + type, listener);
}
}
else {
throw new Error("Can't addEventListener: target object is null.");
}
}
然后,您只需调用新的addEventListener函数,该函数将带走浏览器支持的任何内容。o.m也可以写成o['m'],后者通常用于需要将m构建为字符串,而点符号不是选项的情况。谢谢@D.S.Schneider!有趣的方法。我刚才问过这个问题,所以我很抱歉这么晚才感谢你。
function addEventListener(target, type, listener) {
if (target) {
if (target.addEventListener) {
target.addEventListener(type, listener, false);
}
else if (target.attachEvent) {
target.attachEvent("on" + type, listener);
}
}
else {
throw new Error("Can't addEventListener: target object is null.");
}
}