js 检测浏览器渲染引擎

本文介绍了如何使用JavaScript来检测常见的五大浏览器渲染引擎:IE、Gecko、WebKit、KHTML和Opera。按照特定的检测顺序,首先识别Opera,接着是Webkit,然后是KHTML,再是Gecko,最后是IE。检测顺序的正确性对于准确判断至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要检测五大渲染引擎:IE、Gecko、WebKit、KHTML、Opera

思路

要正确识别呈现引擎,检测顺序要正确。

  1. 第一步:识别 Opera,因为它的用户代理字符串有可能完全模仿其他浏览器
  2. 第二步:检测 Webkit,因为 Webkit 的用户代理字符串中包含 “Gecko” 和 “KHTML” 这两个字符串,如果首先检测它们,可能会得出错误的结论
  3. 第三步:检测 KHTML,因为 KHTML 的用户代理字符串中包含 “Gecko”
  4. 第四步:检测 Gecko
  5. 第五步:检测 IE
var clientEngine = (function () {
  // 渲染引擎对象,值为其对应的版本号
  var engine = {
    ie: 0,
    gecko: 0,
    webkit: 0,
    khtml: 0,
    opera: 0,
  }

  var ua = navigator.userAgent

  if (window.opera) {
    // 使用 window.opera 对象识别 Opera
    engine.opera = window.opera.version()
  } else if (/AppleWebKit\/(\S+)/.test(ua)) {
    // Webkit 中 “AppleWebKit” 是独有的,故使用该字符串检测 Webkit
    engine.webkit = RegExp['$1']
  } else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)) {
    // Konqueror 早期版本中不包含 KHTML 版本,故使用 Konqueror 版本代替
    engine.khtml = RegExp['$1']
  } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) {
    // Gecko 的版本号位于字符串“rv:”与一个闭括号之间
    engine.gecko = RegExp['$1']
  } else if (/MSIE ([^;]+)/.test(ua)) {
    // IE 的版本号位于字符串“MSIE”的后面、一个分号的前面
    engine.ie = RegExp['$1']
  }

  return engine
})()

—参考《JavaScript高级程序设计》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值