双内核浏览器内核切换控制技术

什么是双核浏览器

双核浏览器支持使用两个或者以上的浏览器引擎来渲染网页,目前绝大多数国产浏览器均为双核甚至多核。html

双核究竟是什么内核

  • 基于Chromium的Blink/Webkit内核。通常在国产浏览器中被称为“极速内核/极速模式”。该内核随着该浏览器的更新而更新。
  • IE内核。通常在国产浏览器中被称为“IE内核/兼容模式”,是指调用Windows系统中内置的IE,并不是该浏览器单独内置了一套IE,该内核随着Windows或者IE的更新而更新。

    惟一的例外状况是2012年360安全浏览器曾经推出内置IE的版本html5

IE内核的兼容模式

某些国产浏览器在“IE内核”下,能够切换其“兼容模式”,这并非切换不一样的IE内核版本,而是经过调用系统中IE内核的不一样“文档模式”来实现的,详细的信息请参阅这里。这可能形成一些问题。好比A用户系统中安装了IE8,使用QQ浏览器的“兼容模式 - 7”;B用户系统中安装了IE11,也使用QQ浏览器的“兼容模式 - 7”,虽然都用的同一个浏览器且选择了同一个兼容模式,可是对于html5表单项等诸多DOM细节,有着很大的差别。git

如何配置网站要使用的渲染引擎

在html的<head>标签中加入以下代码:github

<!DOCTYPE html>
<html>
<head>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  ... 如下代码省略

复制代码

这里咱们一共添加了三条有关浏览器渲染方面的指令:web

  • <meta name="renderer" content="webkit">中的webkit指令,可让QQ、傲游、360等浏览器默认使用Chromium内核渲染页面。
  • X-UA-Compatible 中的IE=edge指令,可让IE或者调用IE内核的浏览器,使用标准模式渲染网页,注意这里和“Edge浏览器”无关,只是恰巧重名罢了。
  • X-UA-Compatible 中的chrome=1指令,可让安装了GCF插件的IE,在打开网页时使用Chromium内核渲染页面。

须要注意几个重要的神坑:

  • <meta>标签必须出如今<head>内的顶部,不然浏览器可能没法识别。
  • <!DOCTYPE html>文档类型声明必须写,不然各类浏览器内核均会以“IE5模式(又称做怪癖模式、quirks模式)”渲染网页。
  • 测试效果时,网站必须以域名访问,内网或者本地地址方式可能对部分浏览器无效。
  • 若是用户曾经自主选择过渲染引擎,浏览器将记住这个选择,它的优先级高于咱们的指令。若是测试时不当心点了,在必要的状况下须要卸载浏览器并清空用户数据,而后重装。
  • 应该尽可能保证整站的渲染内核一致,以便避免内核切换可能带来的cookie丢失问题。

经过js判断当前浏览器内核及文档模式

<script src="//gucong3000.github.io/browser.js/browser.min.js"></script>
<script> if (browser.MSIE) { alert("系统IE版本:" + browser.rv + "\n文档模式:" + browser.MSIE); } else if (browser.Edge) { alert("Edge内核浏览器"); } else if (browser.Webkit) { alert("Blink/Webkit内核的浏览器"); } else if (browser.Gecko) { alert("Gecko内核的浏览器"); } </script>
复制代码

参考文档连接

开发者可控制内核切换

只支持用户自主切换内核

资料暂缺或不明确