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

来源:互联网 发布:种植牙的利与弊 知乎 编辑:程序博客网 时间:2024/05/01 08:50

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

原创粉丝点击