javascript高级程序设计 第九章-- 客户端检测

          javascript高级程序设计 第九章-- 客户端检测
客户端检测是javascript开发中最具争议的一个话题,由于浏览器间存在差别,通常需要根据不同浏览器的能
力分别编写不同的代码。有下列常使用的客户端检测方法:
能力检测:在编写代码之前先检测特定浏览器的能力。例如,脚本在调用某个函数之前,可能要先检测该函数
是否存在。这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应
的能力是否存在上。能力检测无法精确地检测特定的浏览器和版本。
怪癖检测:怪癖实际上是浏览器中存在的bug,例如早期的WebKit中就存在一个怪癖,它会在for-in循环中返
回被隐藏的属性。怪癖检测通常涉及到运行一小段代码,然后确定浏览器是否存在某个怪癖,怪癖检测效率很
低,只在会干扰脚本的情况下使用,怪癖检测无法精确地检测特定的浏览器和版本。
用户代理检测: 通过检测用户代理字符串来识别浏览器。用户代理字符串中包含大量与浏览器有关的信息,包
括浏览、平台、操作系统及浏览器版本。用户代理字符串有过相当长的发展历史,在此期间,浏览器提供商试
图通过在用户代理字符串中添加一些欺骗信息,欺骗网站相信自己的浏览器是另外一种浏览器。用户代理检测需
要特殊的技巧,特别要注意Open会隐藏其用户代理字符串的情况。即便如此,通过用户代理字符串仍然能够检
测出浏览器所用的呈现引擎以及所在的平台,包括移动设备和游戏系统。
在决定使用哪种客户端检测方法时, 一般优先考虑使用能力检测。怪癖检测是确定应该如何处理代码的第二
选择,而用户代理检测则是客户端检测的最后一种方案,因为这种方法对用户代理字符串具有很强的依赖性。

时间: 2024-08-02 02:50:39

javascript高级程序设计 第九章-- 客户端检测的相关文章

javascript高级程序设计 第一章--javascript简介

javascript高级程序设计 第一章--javascript简介Netscape开发的javascript最初的目的就是处理由服务器负责的一些输入验证操作,而在js问世之前,必须                    把表单数据发到服务器端用户才能得到反馈.如今的js不再局限于简单的数据验证,而且具备了与浏览器窗口及其内容等所有方面的交互能力,js已经发展成功能全面的面向客户端的编程语言.javascript由Netscape公司开发,原名Livescript,是为了迎合当时的java热,所

JavaScript高级程序设计学习笔记第九章--客户端检测

1.能力检测:能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.(我的理解就是识别浏览器能做什么不能做什么) 2.怪癖检测:目标是识别浏览器的特殊行为.但与能力检测确认浏览器支持什么能力不同,怪癖检测是想要知道浏览器存在什么缺陷(“怪癖”也就是 bug). 3.用户代理检测:争议最大的一种客户端检测技术.用户代理检测通过检测用户代理字符串来确定实际使用的浏览器.在每一次 HTTP 请求过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过 JavaScript 的 naviga

第九章客户端检测

客户端检测 9.1能力检测 只要确定浏览器支持特定的能力,就能给出解决方案 if(object.propertyInQuestion){ } 两个概念:先检测达成目的的最常用的特性:检测实际要用到的特性 9.1.1更可靠的能力检测 尽可能使用typeof进行能力检测 在浏览器环境测试任何对象的某个特性是否存在使用如下函数: function isHostMethod(object, property) { var t = typeof object[property]; return t ==

Javascript高级程序设计——第一章:javascript简介

第一章 javascript简介 1.Javascript简史 javascript诞生于1995年,是由网景公司的Brendan Eich开发的,最初的目的是在客户端处理一些输入验证操作,自此后成为常见浏览器的特色功能,如今用途已经不限于简单的数据验证,而是具备与浏览器窗口及其内容等几乎所有方面交互的能力.当时javascript是为了搭上媒体热炒的java才改名为javascript其最初名为livescript. 在javascript取得巨大成功后,微软公司也在自己的浏览器中加入了名为J

Javascript高级程序设计——第二章:在HTML中使用Javascript

第二章:在HTML中使用Javascript <script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该立即下载脚本,但不妨碍页面的其他操作,比如下载其他资源或等待加载其他脚本,只针对外部脚本有效. defer:可选.表示脚本可以延迟到文档完全被解析和显示之后再执行.只针对外部脚本有效. src:可选.表示包含要执行代码的外部文件. type:可选.表示编写代码使用

读书笔记 - javascript 高级程序设计 - 第一章 简介

第一章 简介   诞生时间 1995 最初用途 客服端验证 第一版标准 注意是标准 1997年 Ecma-262  一个完整的js实现由三部分组成 ECMAScript DOM 文档对象模型 BOM 浏览器对象模型 ECMAScript的宿主环境 web浏览器 Node(服务器js平台) adobe flash js和as的关系 他们都实现了 ECMAScript 五大主流浏览器 IE Firefox Safari Chrome Opera dom介绍 它是针对xml但经过扩展用于html的应用

读书笔记 - javascript 高级程序设计 - 第二章 在Html中使用JavaScript

1 <script>的6个属性 async  立即下载当前script标签的外部脚本 但不能影响别的 charset 没用了 defer  文档显示之后再执行脚本,只对外部脚本有效 language 没用了 src type 描述代码内容Mine类型 默认就是text/javascript 没什么用 2 在解释器对<script>元素内部的所有代码求值完毕以前 页面中的其余内容都不会被浏览器加载或显示 3 有两种script 嵌入式 外部引入式 在解析外部引入式的js文件时,页面的

《高级程序设计》 9 客户端检测

能力检测 怪癖检测 用户代理检测 一.能力检测 1.更可靠的能力检测 2.能力检测,不是浏览器检测 二.怪癖检测 三.用户代理检测 1.用户代理字符串的历史 ①早期的浏览器 ②Netscape Navigator 3和Internet Explorer 3 ③Netscape Communicator 4和IE4~IE8 ④Gecko ⑤Webkit ⑥Konqueror ⑦Chrome ⑧Opera ⑨IOS和Android 2.用户代理字符串检测技术 ①识别呈现引擎 ②识别浏览器 ③识别平台

《JavaScript高级程序设计》 阅读计划

第一周       第1章 JavaScript简介   1 第2章 在Html中使用JavaScript 1 第3章 基本概念   3         第二周       第4章 变量.作用域和内存问题 1.5 第5章 引用类型   2 第6章 面向对象的程序设计 1 第7章 函数表达式   1         第三周       第八章 BOM   1 第九章 客户端检测   1 第十章 DOM   2 第十一章 DOM扩展   1         第四周       第十二章 DOM2和D