JavaScript判断浏览器内核和IE内核版本获取——踩坑记

因为swiper4.1.6对低版本的IE兼容性很差,所以需要做一个检测浏览器内核和内核版本的功能。

navigator.userAgent是一个字符串,声明了浏览器用于 HTTP 请求的用户代理头的值,可以拿到请求的浏览器的相关信息。

其中,Trident是IE浏览器使用的内核,MSIE则是出现在旧版本的IE浏览器信息中。

document.documentMode可以获取到 使用IE内核时 内核的版本。

// 获取浏览器内核
function getBrowserEngine() {
  var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  if (userAgent.indexOf('Trident') !== -1 || userAgent.indexOf('MSIE') !== -1) { //表示使用的是IE的内核
    return 'IE';
  } else if (userAgent.indexOf('Firefox') !== -1) {
    return "Firefox";
  } else if (userAgent.indexOf('Chrome') !== -1) {
    return 'Chrome';
  } else if (userAgent.indexOf('Safari') !== -1) {
    return 'Safari';
  } else {
    return;
  }
}

// 获取当前文档渲染使用的IE内核版本
function getIEVersion() {
  return document.documentMode;
}

记踩坑:

发现无论兼容模式时设置的是哪个版本的IE内核,都会被document.documentMode解析成系统安装的最高版本IE内核。

经过查找,发现项目html中写了以下内容:

该配置的含义是:

1、如果支持Google Chrome Frame:GCF,则使用GCF渲染;

2、如果系统安装ie8或以上版本,则使用最高版本ie渲染;

3、否则,这个设定可以忽略。

注释掉这段内容,代码即可正常工作了。

你可能感兴趣的:(web前端)