Urj*_*jan 42 html internet-explorer svg vml x-ua-compatible
我有一个网站取决于矢量绘图,对于Internet Explorer我使用VML和其他浏览器我正在使用SVG.但是,如果不退回到具有VML的IE7模式,IE8也不支持.
因此,我包括在内<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />.
问题(实际上是一件好事)是IE9现在支持SVG所以我不希望它回退到IE7模式,后者的性能和兼容性要差得多.我如何告诉IE8只能回退到IE7模式,但让IE9保持IE9模式?
现在我正在对代理进行服务器端检查是否在头部包含EmulateIE7-string但是我想尽可能避免这种情况.
rob*_*cat 41
我刚玩了一玩,发现以下作品给我:
<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" >
Run Code Online (Sandbox Code Playgroud)
那是用逗号而不是半冒号!
我没有查看规范,但格式类似于适用于Chrome Frame的content ="IE = 7,chrome = 1".我还发现content ="IE = 7,9"有效,但我怀疑这种格式不正确.
编辑:
如果您的网页位于iframe中,请注意严重问题.如果你在父级处于低于IE9严格的任何模式的框架页面中使用上述内容,那么IE9将回退到IE8模式(忽略IE = 7请求!).任何已知的变通方法欢迎:)可能与IE11无关.
以上似乎是设计特征的副作用,iframes(我假定帧)全部处于IE9模式,或者全部都低于IE9模式.人们永远不能将IE9帧与<IE9帧混合,请参阅MS问题#599022和#635648.
编辑2:
请注意,IE11仅支持"IE = edge"(不是IE = 11),并且使用IE = edge对IE功能(包括用户代理)具有显着影响.
编辑3:
编辑4:
X-UA-Compatible已从Microsoft Edge浏览器中删除.只有Internet Explorer具有兼容模式.请注意,如果您在Windows Phone 10上的应用程序中使用WebView,那么您仍在使用IE11(而不是Edge).
另外由于各种原因,您不能相信用户代理会告诉您正确的兼容级别,而是使用document.documentModeJavaScript.
squ*_*man 27
其他人提到的双重模式应该可以工作(但不是微软所示)并且是我在MS文档中看到的最接近的事情应该按照描述的方式工作.下面有一个更新,显示元属性值应采用的正确形式.
所以,如果你使用这个:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
Run Code Online (Sandbox Code Playgroud)
不幸的是,你会得到的是IE8渲染为IE8,因为x-ua兼容引擎的模糊版本引导.请参阅此文档: 定义文档兼容性:了解 MSDN上的内容属性值.在该部分中,您将看到在上半部分,它们定义任何定义为大于当前浏览器版本的版本向量将被解释为最大可用渲染引擎.因此,emulateIE9 get被转换为emulateIE8.笨.
然后,实际上,在同一个呼吸中,他们谈论使用多个版本向量,如上面的代码片段,以排除特定的引擎.但由于模糊版本逻辑,这将永远不会奏效.啊,微软.再次失败.
使用围绕元的CC的原因是不可行的,浏览器必须在它到达CC时选择了渲染引擎.根据MS自己的文档,除了其他元素或标题之外,x-ua元素必须位于标题中的任何其他元素之前.
如果有人能解决这个问题,我会全力以赴,因为我迫切希望在包括IE9时将IE8排除在支持之外.
重要更新:
Robocat指出,使用逗号而不是分号,Micrsoft显示是正确的方法.我测试了它,它对我有用.我已经更新了我的测试页面.
所以正确的形式是这样(由robocat建议):
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">
Run Code Online (Sandbox Code Playgroud)
在不正确的形式是这样的(由微软的建议):
<meta http-equiv="X-UA-Compatible" content="IE=7; IE=9">
Run Code Online (Sandbox Code Playgroud)
Sru*_*uly -3
<!--[if IE 8]>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
这称为条件评论
http://en.wikipedia.org/wiki/Conditional_comment