对象检测(object detection)

<p>测试一个对象——比如document.all——是否存在,最安全的方法就是判断它是否返回字符串"undefined"。这个技巧就叫做对象检测(object detection)。</p>
<p>在当今世界里,我们似乎真的无法摆脱Microsoft的影子。无论是window操作系统还是ie浏览器,我们都不得不优先使用它;就算ie6的问题多多,我们都必须把它摆到第一位。国外虽然已经提前给ie6送上了葬礼,连它的老东家微软也宣布了它的死刑;但面对国内依然50%以上占有率,前途似乎依然渺茫。</p>
<p>我很久以前就开始使用Firefox浏览器,Firebug插件让我的工作轻松了很多。</p>
<p>
IE6对web标准的支持缺乏已经是公认的事实。CSS一大把bugs和hacks,对Javascript也是特立独行地使用了一些自己专有的对象。比如W3C使用
addEventListener,而ie却使用attachEvent;W3C使用stopPropagation,而ie却使用cancelBubble,等等...</p>
<p>由于ie的市场占用率实在惊人,所以我们这些做前端的,满足web标准的同时,也不得不照顾一下ie。为了兼容ie,我们只有多增加几行代码。只需使用if-else语句便可以兼容ie。</p>

<pre name='code' class='js'>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);
}

};</pre>
<p>W3C使用addEventListener,当我们使用的是firefox浏览器,那它将执行if语句,因为它定义了addEventListener,所以将执行:</p>
<pre name='code' class='js'>target.addEventListener(eventType, functionRef, capture);</pre>
<p>如果当前使用的是ie浏览器,由于它没有定义addEventListener,即此时addEventListener返回的类型等于undefined,所以便执行else if语句,微软定义了另外一个作用等同于addEventListener的,即attachEvent:</p>
<pre name='code' class='js'>target.attachEvent("on" + eventType, functionRef);</pre>
<p>这就是经常使用的技巧:对象检测(object detection)</p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值