以搜狗高速浏览器为代表的国产浏览器为什么不根据[X-UA-...

  • 2019-04-23 14:56:04
  • 浏览:5
  • 我来回答

X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的。通过在meta中设置X-UA-Compatible的值,可以指定网页的兼容性模式设置。在网页中指定的模式优先权高于服务器中(通过HTTP Header)所指定的模式。兼容性模式设置优先级:“IE=Edge,chrome=1″这样简单快捷,但是弊端是代码将无法通过W3C验证。其实这并不是问题,毕竟标准只是标准,如果只有这一个“错误”完全不会有任何不良的影响。

IE版本不能采取新渲染模式, 双核属小众产品

国内的双核模式一般都是这样的:

  “兼容模式”:调用系统中所安装的 IE 内核;

  “极速模式”:Chromium 定制 (Webkit + V8)

  网页中声明的X-UA-Compatible只是在高版本浏览器有向前兼容的渲染模式时进行主动选择,比如可以指定IE9按IE7模式进行渲染。edge的话就是始终用最新的IE模式渲染。但是双核浏览器不会自己捆绑新版本 IE,所以其使用的用户系统中的IE版本决定了对于安装了IE9的用户,不可能采取新版本的渲染模式。

  另外,这个声明只是让访客访问时使用的浏览器选择兼容版本的,目前尚没有切换内核的含义。就如题中所说,浏览器能知道你究竟想用哪个内核渲染吗?显然只能在你当前的内核模式下选择合适的兼容版本。

  双核浏览器本来是个小众的东西,只是因为国内有那么大IE6份额,有那么多IE only的网站才在国内流行起来。


更改浏览器逻辑造成页面刷新,用户不可接受

X-UA-Compatible的两个值分别代表如下含义:1、如果是IE的话使用最高版本的引擎渲染。2、如果支持chrome frame,则使用chrome frame渲染。

双核浏览器中使用IE内核和webkit内核,只有一个IE版本,所以Edge无效,因为没有chrome frame,所以第二个值也无效。

理想的是根据这个标签来切换内核,但事实的情况是浏览器会先选好一个内核,再去渲染页面。如果一定要达到你想的效果,则需要更改浏览器的逻辑,同时会造成一次页面刷新(使用新内核渲染)。国产浏览器目前对解析Dom的过程没有过多参与,基本上就是调用不同核心打开目标网址。

在这个架构上要实现这个功能,就得自己写网页解析,解析遇到这个标签再决定调哪个核心。这会拖慢整个渲染过程,每一次打开网页都要等几十几百毫秒,甚至几十秒(与网络有关),才能确定用什么引擎渲染,这对于用户体验来说不可接受。


内容补充
相关推荐