美文网首页
第九章 客户端检测(js高级程序设计)

第九章 客户端检测(js高级程序设计)

作者: 简默丶XS | 来源:发表于2019-04-01 16:33 被阅读0次
  • 在现实当中,浏览器之间的差异以及不同浏览器的“怪癖”( quirk),多得简直不胜枚举。因此,客户端检测除
    了是一种补救措施之外,更是一种行之有效的开发策略。
  • 检测 Web 客户端的手段很多,而且各有利弊。但最重要的还是要知道,不到万不得已,就不要使
    用客户端检测。只要能找到更通用的方法,就应该优先采用更通用的方法。一言以蔽之,先设计最通用
    的方案,然后再使用特定于浏览器的技术增强该方案。

能力检测

判断浏览器能力,而不是区分浏览器

  function getElement(id) {
    if (document.getElementById) {
      return document.getElementById(id);
    } else if (document.all) {
      return document.all[id];
    } else {
      throw new Error("No way to retrieve element!");
    }
  }

更可靠的能力检测:
使用type类型去判断属性的存在,而不是单独检测属性的存在
例如:object.solt 可能是函数,也可能是一个普通类型的值

function isSortable(object){
  return typeof object.sort == "function";
}

最保守的检查方法:

  //作者: Peter Michaux
  function isHostMethod(object, property) {
    var t = typeof object[property];
    return t == 'function' ||
      (!!(t == 'object' && object[property])) ||
      t == 'unknown';
  }
result = isHostMethod(xhr, "open"); //true
result = isHostMethod(xhr, "foo"); //false

注意小技巧,!是取非,!!则是转换为布尔类型

能力检测不是浏览器检测:
在实际开发中,应该将能力检测作为确定下一步解决方案的依据,而不是用它来
判断用户使用的是什么浏览器。

怪癖检查

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

  1. IE8 及更早版本中存在一个 bug,即如果某个实例属性与[[Enumerable]]标记为 false 的某个原型属性同名,那么该实例属性将不会出现在fon-in 循环当中

  2. Safari 3 以前版本会枚举被隐藏的属性

用户代理检测

1.HTTP 规范(包括 1.0 和 1.1 版)明确规定,浏览器应该发送简短的用户代理字符串,指明浏览器的名称和版本号。 RFC 2616(即 HTTP 1.1 协议规范)是这样描述用户代理字符串的

稀里糊涂的一章。

相关文章

  • 第九章 客户端检测(js高级程序设计)

    在现实当中,浏览器之间的差异以及不同浏览器的“怪癖”( quirk),多得简直不胜枚举。因此,客户端检测除了是一种...

  • JS转义字符

    摘自《JS高级程序设计》

  • js高级程序设计 第 九 章 客户端检测

    在使用客户端检测时要切记,不到万不得已的时候,就不要使用客户端检测,只要能找到更通用的方法,就应该优先采用更通用的...

  • 前端知识体系

    1.JS基础 5 2.JS高级 5JS高级程序设计,各种api的应用,es6新增api的运用 3.CSS...

  • JavaScript 编程:8.客户端检测

    客户端检测 用户代理字符串检测技术 client.js 文件:

  • Books

    一 JS书籍推荐JS高级程序设计 (望远镜)JS工作原理犀牛书二、行业书籍《人月神话》

  • 正则表达式

    JS高级技巧 本篇是看的《JS高级程序设计》第23章《高级技巧》做的读书分享。本篇按照书里的思路根据自己的理解和经...

  • 周报 第七期

    这周在看 《Javascript 高级程序设计》小红书。 JS 基本语法 js是区分大小写的每个语句 ; 隔开,语...

  • 红宝书阅读笔记(1)

    前言 虽然一直都在用js,没有正经看过几本js的书。久仰红宝书大名(《JavaScript高级程序设计》),这段时...

  • 一个JAVA程序员的前端之路

    1.想学js,因为我觉得js不难。2.选择《JavaScript高级程序设计(第3版)》作为入门书籍。3.将会记录...

网友评论

      本文标题:第九章 客户端检测(js高级程序设计)

      本文链接:https://www.haomeiwen.com/subject/rwuupqtx.html