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;
}

一般来说怪癖是某个浏览器独有的,当这些怪癖会影响我们的代码时,我们就需要做怪癖检测,以做出对应的处理

posted @ 2019-01-05 15:13  巽秋  阅读(158)  评论(0编辑  收藏  举报