Javascript-为什么使用Object dectec而不是browser dectect

Object dectect

学习Javascript不久后你就会发现特定的Javascript功能在特定浏览器上并不能正常执行。如果你想使用某些高级功能,你需要检查浏览器是否支持它,这篇文章告诉你怎么做。


Browser dectection:No

如果你想知道浏览当前页面的浏览器是否支持某个特定对象,绝对不要使用browser dectect。虽然你明确的知道特定浏览器对该功能呢该是否支持,但是你怎么知道其他所有浏览器,甚至是你不知道的浏览器呢?

Browser dectetion在90%情况下工作正常,但是在少量访问者还是会出现问题,这包括那些你不知道的浏览器和新出现的浏览器。

案例研究:mouseovers

我们应该知道IE3不支持对mouseover很重要的document.images数组,所以我们需要阻止mouseover代码在IE3上运行。其中一个解决方法就是不在浏览器检测结果为IE3的浏览器上运行mouseover代码。

但是在绝大多数操作系统上,netscape2也不支持document.images。如果只做浏览器检测,netscape将会产生错误。那么我们为什么不将netscape加入到浏览器检测中去呢?因为在OS/2上的netscape几乎和netscape3完全兼容并且可以处理mouseover效果。所以使用了浏览器检测后所有netscape2用户将都不能现实mouseover效果。

同时,浏览器给与用户修改浏览器标识符的权限,所以浏览器检测的结果可能并不靠谱。


Object dectection:Yes

因此,我们简单测试浏览器是否支持某个我们要使用的对象。继续mouseover例子。代码依赖于document.images,所以我们测试浏览器是否支持它,这可以通过以下代码完成:

if (document.images)
{
	do something with the images array
}

重点

所以一切的重点就是如果你想使用document.images,首先检查它。

如果使用object dectection,你的代码永远不会产生错误信息,虽然在特定浏览器可能不能正常工作.


原文:http://www.quirksmode.org/js/support.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值