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,你的代码永远不会产生错误信息,虽然在特定浏览器可能不能正常工作.