JavaScript编写检测用户所使用的浏览器的代码示例
网络编程 2021-07-04 21:05www.168986.cn编程入门
这篇文章主要介绍了JavaScript编写检测用户所使用的浏览器的代码示例,这样就可以根据用户的浏览状态来调整桌面版移动版或者兼容性的页面,需要的朋友可以参考下
能力检测
在编写代码之前先检测特定浏览器的能力。例如,脚本在调用某个函数之前,可能要先检测该函数首付存在。这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上。能力检测无法精确地检测特定的浏览器和版本。
怪癖检测
怪癖实际上是浏览器实现中存在的bug,例如早期的webkit中就存在一个怪癖,即它会再for-in循环中返回被隐藏的属性。怪癖检测通常涉及到运行一段代码,然后确定浏览器是否存在某个怪癖。由于怪癖检测无法精确地检测特定的浏览器和版本。
用户代理检测
通过检测用户代理字符串来识别浏览器。用户代理字符串中包含大量与浏览器有关的信息,包括浏览器、平台、操作系统及浏览器版本。用户代理字符串有过一段相当长的发展历史,在此期间,浏览器提供商视图通过在用户代理字符串总添加一些欺骗性信息,欺骗网站详细自己的浏览器是一种浏览器。用户代理检测需要特殊的技巧,特别是要注意Opera会隐瞒其用户代理字符串的情况。即便如此,通过用户代理字符串仍然能够检测出浏览器所用的呈现引擎以及所在的平台,包括移动设备和游戏系统。
在每一次HTTP请求过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过Javascript的navigator.userAgent属性访问。在服务器端,通过检测用户代理字符串来确定用户使用的浏览器是一种常用而且广为接受的做法。而在客户端,用户代理检测一般被当作一种万不得已的做法,其优先级排在能力检测和怪癖检测之后。
var client = function(){ // 呈现引擎 var engine = { ie:0, gecko:0, webkit:0, khtml:0, opera:0, // 完整的版本号 ver:null }; // 浏览器 var browser = { // 主要浏览器 ie:0, firefox:0, safari:0, konq:0, opera:0, chrome:0, // 具体的版本号 ver:null }; // 检测呈现引擎和浏览器 var ua = navigator.userAgent; if (window.opera) { engine.ver = browser.ver = window.opera.version(); engine.opera = browser.opera = parseFloat(engine.ver); } else if (/AppleWebKit\/(\S+)/.test(ua)) { engine.ver = RegExp["$1"]; engine.webkit = parseFloat(engine.ver); // 确定是Chrome还是Safari if (/Chrome\/(\S+)/.test(ua)) { browser.ver = RegExp["$1"]; browser.chrome = parseFloat(engine.ver); } else if (/Version\/(S+)/.test(ua)) { browser.ver = RegExp["$1"]; browser.safari = parseFloat(browser.ver); } else { // 近似地确定版本号 var safariVersion = 1; if (engine.Webkit <100) { safariVersion = 1; } else if (engine.webkit < 312) { safariVersion = 1.2; } else if (engine.webkit < 412) { safariVersion = 1.3; } else { safariVersion = 2; } browser.safari = browser.ver = safariVersion; } } else if (/KHTML\/(S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)) { engine.ver = browser.ver = RegExp["$1"]; engine.khtml = browser.kong = parseFloat(engine.ver); } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){ engine.ver = RegExp["$1"]; engine.gecko = parseFloat(engine.ver); // 确定是不是firefox if (/Firefox\/(S+)/.test(ua)) { browser.ver = RegExp["$1"]; browser.firefox = parseFloat(browser.ver); } } else if (/MSIE ([^;]+)/.test(ua)) { engine.ver = browser.ver = RegExp["$1"]; engine.ie = browser.ie = parseFloat(engine.ver); } // 检测浏览器 browser.ie = engine.ie; browser.opera = engine.opera; // 返回这些对象 return { engine:engine, browser: browser } }(); console.log(client.engine); console.log(client.browser);
Tangram 检测浏览器源码
/ 声明baidu包 / var baidu = baidu || {version: "1-3-2"}; // meizz 20100513 将 guid 升级成 \x06 baidu.guid = "$BAIDU$";//提出guid,防止修改window[undefined] 20100504 berg / meizz 2010/02/04 顶级域名 baidu 有可能被闭包劫持,而需要页面级唯一信息时需要用到狼蚁网站SEO优化这个对象 / window[baidu.guid] = window[baidu.guid] || {}; / 声明baidu.browser包 / baidu.browser = baidu.browser || {}; / 判断是否为isGecko / baidu.browser.isGecko = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent); / 判断是否为isWebkit / baidu.browser.isWebkit = /webkit/i.test(navigator.userAgent); / 判断是否为标准模式 / baidu.browser.isStrict = document.patMode == "CSS1Compat"; / 判断是否为safari浏览器 / if ((/(\d+\.\d)(\.\d)?\s+safari/i.test(navigator.userAgent) && !/chrome/i.test(navigator.userAgent))) { baidu.browser.safari = parseFloat(RegExp['\x241']); } / 判断是否为opera浏览器 / if (/opera\/(\d+\.\d)/i.test(navigator.userAgent)) { baidu.browser.opera = parseFloat(RegExp['\x241']); } / 判断是否为chrome浏览器 / if (/chrome\/(\d+\.\d)/i.test(navigator.userAgent)) { baidu.browser.chrome = parseFloat(RegExp['\x241']); } / 判断是否为ie浏览器 / if (/msie (\d+\.\d)/i.test(navigator.userAgent)) { baidu.ie = baidu.browser.ie = document.documentMode || parseFloat(RegExp['\x241']); } / 判断是否为firefox浏览器 / if (/firefox\/(\d+\.\d)/i.test(navigator.userAgent)) { baidu.browser.firefox = parseFloat(RegExp['\x241']); // '\x241' 是八进制表示法 '\x24' 对应字符 '$' ,所以 '\x241' 等同于 '$1' }
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程