Javascript高级编程学习笔记(33)—— 客户端检测(2)怪癖检测
怪癖检测
和能力检测类似,但其目标不同
能力检测的目的是判断浏览器支不支持某种能力
而怪癖检测的目的是判断浏览器是否存在某些缺陷
这种时候需要我们执行一段代码来判断浏览器是否有这样的缺陷
或者说是怪癖(bug)
一般出现这种情况的浏览器当然是IE了
就以IE的某个怪癖举例
在IE8以下有一个bug
如果某个实例的属性和其原型的不可枚举属性同名,那么这个属性将不会出现在 for-in 循环中
也就是说实例上的属性被原型上的属性屏蔽了
其怪癖检测的代码如下:
var hasDontEnumQuirk = function(){ var o = {toString:function(){}}; for(var prop in o){ if(prop ==="toString"){ return false;// 如果能遍历出toString则说明浏览器不存在该怪癖 } } return true; }
一般来说怪癖是某个浏览器独有的,当这些怪癖会影响我们的代码时,我们就需要做怪癖检测,以做出对应的处理