与能力检测类似,怪癖检测(quirks detection)的目标是识别浏览器的特殊行为。但与能力检测确认浏览器支持什么能力不同,怪癖检测是想要知道浏览器存在什么缺陷(“怪癖”也就是bug)。这通常需要运行一小段代码,以确定某一特性不能正常工作。例如,IE8及更早版本中存在一个bug,即如果某个实例属性与标记为[[DontEnum]]的某个原型属性同名,那么该实例属性将不会出现在fon-in循环当中。可以使用如下代码来检测这种“怪癖”。

var hasDontEnumQuirk = function(){

var o = { toString : function(){} };
    for (var prop in o){
        if (prop == "toString"){
            return false;
        }
    }

return true;
}();

QuirksDetectionExample01.htm

以上代码通过一个匿名函数来测试该“怪癖”,函数中创建了一个带有toString()方法的对象。在正确的ECMAScript实现中,toString应该在for-in循环中作为属性返回。
另一个经常需要检测的“怪癖”是Safari 3以前版本会枚举被隐藏的属性。可以用下面的函数来检测该“怪癖”。

var hasEnumShadowsQuirk = function(){

var o = { toString : function(){} };
    var count = 0;
    for (var prop in o){
        if (prop == "toString"){
            count++;
        }
    }

return (count > 1);
}();

QuirksDetectionExample01.htm

如果浏览器存在这个bug,那么使用for-in循环枚举带有自定义的toString()方法的对象,就会返回两个toString的实例。
一般来说,“怪癖”都是个别浏览器所独有的,而且通常被归为bug。在相关浏览器的新版本中,这些问题可能会也可能不会被修复。由于检测“怪癖”涉及运行代码,因此我们建议仅检测那些对你有直接影响的“怪癖”,而且最好在脚本一开始就执行此类检测,以便尽早解决问题。

想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili

JavaScript-怪癖检测相关推荐

  1. JavaScript高级程序设计之客户端检测之怪癖检测第9.2讲笔记

    与能力检测类似,怪癖检测(quirks detection)的目标是识别浏览器的特殊行为.但与能力检测确 认浏览器支持什么能力不同,怪癖检测是想要知道浏览器存在什么缺陷( "怪癖" ...

  2. 说说 JavaScript 对浏览器的怪癖检测

    怪癖检测指的是识别浏览器的特殊行为,就是浏览器的缺陷行为.通常是运行一段代码来确定某个特性不能正常工作. 在 IE8以及更早的版本中存在着这样一个 bug:如果某个实例属性与标记为 [[DontEnu ...

  3. JavaScript类型检测小结-http://bbs.51js.com/viewthread.php?tid=82661

    老话题了,各种方案和相关讨论都不少,简单总结下: 悠久的typeof JavaScript里只有五种基本数据类型:number, string, boolean, null, undefined. 其 ...

  4. 什么才是正确的javascript数组检测方式

    什么才是正确的javascript数组检测方式 前面的话 对于确定某个对象是不是数组,一直是数组的一个经典问题.本文专门将该问题择出来,介绍什么才是正确的javascript数组检测方式 typeof ...

  5. 如何在JavaScript中检测用户的首选配色方案

    by Oskar Hane 由Oskar Hane 如何在JavaScript中检测用户的首选配色方案 (How to detect a user's preferred color scheme i ...

  6. JavaScript 怪癖

    如果对你来说JavaScript还是一门全新的语言,或者你是在最近的开发中才刚刚对它有所了解,那么你可能会有些许挫败 感.任何编程语言都有它自己的怪癖(quirks)--然而,当你从那些强类型的服务器 ...

  7. javascript客户端检测技术

    1. Firefox  Gecko是firefox的呈现引擎.当初的Gecko是作为通用Mozilla浏览器一部分开发的,而第一个采用Gecko引擎的浏览器是Netscape6: 我们可以使用用户代理 ...

  8. javascript漏洞-检测到目标站点存在javascript框架库漏洞

    一般是让升级为最新的版本的脚本文件,但是实际使用过程中,有的插件不兼容,盲目升级会导致网站部分插件不可用. 下面是一种解决方案. 比如漏洞扫描出jquery:2.1.4.作以下处理: 一.根据web应 ...

  9. JavaScript的检测及其数据类型

    一.JavaScript有几种类型的值? Javascript有两种数据类型,分别是基本数据类型和引用数据类型.其中基本数据类型包括Undefined.Null.Boolean.Number.Stri ...

  10. JavaScript人脸检测的实现方法

    今天,我们开始学习tracking.js,它是一个由Eduardo Lundgren开发的轻量级的javascript库,它可以让你做实时的人脸检测,色彩追踪和标记好友的脸.在这个教程中,我们将会看到 ...

最新文章

  1. C++中有string类,string是一个类不是一种类型,c语言中没有
  2. java 矩阵题目_java练习本(20190604)
  3. 需要掌握的八个CSS布局技巧
  4. Spring/SpringBoot常用注解总结
  5. Windows下安装并使用MySQL数据库
  6. 十句保你职场不败的名言
  7. redis的hash类型
  8. BizTalk Server 2010新功能介绍(四):基于安全连接的FTP适配器
  9. 5.13 广东移动 笔试题
  10. bios対初学者_初学者的BIOS
  11. 组网雷达融合处理组件化设计与仿真
  12. 用计算机弹课间进行曲,课间进行曲(修改稿)
  13. 常见的关系型数据库和非关系型数据库区别
  14. 恶意代码分析-静态分析基础
  15. L415 Fat Is Not the Problem—Fat Stigma Is
  16. [Minecraft]基于Forge的1.8.9MOD开发教程——第一讲:搭建开发环境
  17. Oracle中WITH ...... OPTION权限对于权限授予和收回的级联影响
  18. 每周推荐短视频:阿里云基于校企合作培养数据库技术人才
  19. 论文:Amdahl(阿姆达尔定律)与Gustafson(古斯塔夫森定律)。
  20. Pygame游戏制作:配置pygame(必看)

热门文章

  1. BLOCK层代码分析(8)IO下发之plug/unplug机制
  2. oracle 18c 18.3 学习之五 unplug drop plug pdb
  3. html div 内部左右布局,div布局大全
  4. SpringMVC实现服务器端推送服务
  5. php怎么不重复随机数,php怎么生成不重复随机数
  6. JavaScript数组练习
  7. 单纯形法python程序_Python-linprog最小化误差单纯形法
  8. 使用 Tetra 构建全栈应用程序
  9. 13100-46-4,1,2,3,4-Tetra-O-acetyl-β-D-glucopyranose,1,2,3,4-四-邻-乙酰基-BETA-D-吡喃(型)葡萄糖
  10. SparkShuffle详解