您的位置:首页 > 移动开发 > Objective-C

对象检测(object detection)

2010-05-10 23:38 381 查看
测试一个对象——比如document.all——是否存在,最安全的方法就是判断它是否返回字符串"undefined"。这个技巧就叫做对象检测(object detection)。

在当今世界里,我们似乎真的无法摆脱Microsoft的影子。无论是window操作系统还是ie浏览器,我们都不得不优先使用它;就算ie6的问题多多,我们都必须把它摆到第一位。国外虽然已经提前给ie6送上了葬礼,连它的老东家微软也宣布了它的死刑;但面对国内依然50%以上占有率,前途似乎依然渺茫。

我很久以前就开始使用Firefox浏览器,Firebug插件让我的工作轻松了很多。

IE6对web标准的支持缺乏已经是公认的事实。CSS一大把bugs和hacks,对Javascript也是特立独行地使用了一些自己专有的对象。比如W3C使用
addEventListener,而ie却使用attachEvent;W3C使用stopPropagation,而ie却使用cancelBubble,等等...

由于ie的市场占用率实在惊人,所以我们这些前端技术人员,满足web标准的同时,也不得不照顾一下ie。为了兼容ie,我们只有多增加几行代码。只需使用if-else语句便可以兼容ie。

function attachEventListener(target, eventType, functionRef, capture)

{

if (typeof target.addEventListener != "undefined")

{

target.addEventListener(eventType, functionRef, capture);

}

else if (typeof target.attachEvent != "undefined")

{

target.attachEvent("on" + eventType, functionRef);

}

};

W3C使用addEventListener,当我们使用的是firefox浏览器,那它将执行if语句,因为它定义了addEventListener,所以将执行:

target.addEventListener(eventType, functionRef, capture);

如果当前使用的是ie浏览器,由于它没有定义addEventListener,即此时addEventListener返回的类型等于undefined,所以便执行else if语句,微软定义了另外一个,即attachEvent:

target.attachEvent("on" + eventType, functionRef);

这就是经常使用的技巧:对象检测(object detection)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐