san*_*all 200 internet-explorer intranet internet-explorer-8 compatibility-mode
默认情况下,IE8强制Intranet网站进入兼容模式.我尝试将元标题更改为IE8,但它不会确认元标题,只是使用浏览器设置.有谁知道如何禁用它?
And*_*ehi 224
可以覆盖Intranet中的兼容模式.
对于IIS,只需将以下代码添加到web.config即可.用IE9为我工作.
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
相当于Apache:
Header set X-UA-Compatible: IE=Edge
Run Code Online (Sandbox Code Playgroud)
对于nginx:
add_header "X-UA-Compatible" "IE=Edge";
Run Code Online (Sandbox Code Playgroud)
对于express.js:
res.set('X-UA-Compatible', 'IE=Edge')
Run Code Online (Sandbox Code Playgroud)
And*_*rew 84
Michael Irigoyen是正确的,但它有点复杂......
如果您正在使用Paul Irish的精彩样板,那么您将拥有以下内容: -
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
Run Code Online (Sandbox Code Playgroud)
如果您选中"在兼容性视图中显示Intranet站点",这将无法按预期工作并强制IE进入Intranet环境中的兼容模式.您需要删除条件IE注释以防止Intranet兼容模式.
所以下面的代码将起作用:
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
Run Code Online (Sandbox Code Playgroud)
基本上,如果您在<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">语句之前触发条件IE注释,那么如果您使用默认设置运行IE9,则将在Intranet环境中强制进入兼容模式.
更新 - 附加信息: 但请注意,有一个技巧可以使HTML5 boilplate工作:
在DOCTYPE 之前添加一个emtpy条件注释.并注意为好,当你做那个,那么你可以还添加条件注释周围的X-UA-Compatible指令,使得网页HTML5,也有效.例如:
<!--[if HTML5]><![endif]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
一,是由这个答案的第一部分灵感的博客文章,有更多详细信息.顺便说一句:由于在博客中提到,一方面也可以代替用的DOCTYPE前的条件注释半条件与评论没有条件:<!--[]-->.因此,像这样:
<!--[]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
但请注意,后一种变体(<--[]--><!DOCTYPE html>),如通过对另一个问题的回答所解释,将激活众所周知的问题 - 对于没有支持的旧版IE版本X-UA-Compatioble(读取:用于IE7和IE6) - 将浏览器引入怪癖模式.
Pil*_*Bob 34
如果您下拉"工具"菜单并选择"兼容性视图设置"在该对话框的底部是"在兼容模式下显示Intranet站点"设置.如果取消选中此项应解决问题,IE将使用基于DOCTYPE的模式.
ste*_*n.s 19
在这个问题的答案中存在一定程度的混淆.
最常见的答案是服务器端解决方案,它在http标头中设置一个标志,一些注释表明使用元标记的解决方案不起作用.
我认为这篇博客文章很好地概述了如何使用兼容性元信息,并根据我的经验进行了描述:http: //blogs.msdn.com/b/cjacks/archive/2012/02/29/using-x- UA兼容到创建持久-企业网络applications.aspx
要点:
一个重点(我认为很多混乱来自这一点)是IE有两个"类"模式:
文档模式确定呈现引擎(如何呈现网页).
浏览器模式确定IE向服务器发送的用户代理(UA)字符串,IE默认的文档模式,以及IE如何评估条件注释.
有关文档模式与浏览器模式的更多信息,请参阅本文:http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for-网站developers.aspx?重定向=真
根据我的经验,兼容性元数据只会影响文档模式.因此,如果您依赖浏览器检测,这对您没有帮助.但是如果你正在使用特征检测,这应该是要走的路.
因此,我建议使用以下语法使用元标记(在html页面中):
<meta http-equiv="X-UA-Compatible" content="IE=9,10" ></meta>
Run Code Online (Sandbox Code Playgroud)
注意:列出您已测试的浏览器模式.
该博客文章还建议不要使用EmulateIEX.这里有一个引用:
话虽这么说,我觉得奇怪的一件事是当一个应用程序请求EmulateIE7或EmulateIE8时.这些模拟模式本身就是决策.因此,不是要具体说明你想要的东西,而是要求两件事中的一件,然后通过在代码中的其他地方查找DOCTYPE来确定这两件事中的哪一件(然后试图了解DOCTYPE是否会给你标准或怪癖取决于其内容 - 另一个有时令人困惑的任务).而不是那样做,我认为直接指定你想要的东西更有意义,而不是给出一个本身就是问题的回答.如果你想要IE7标准,那么使用IE = 7,而不是IE = EmulateIE7.(请注意,这并不意味着您不应该使用DOCTYPE - 您应该这样做.)
试试这个metatag:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Run Code Online (Sandbox Code Playgroud)
它应该强制IE8呈现为IE8标准模式,即使"在兼容性视图中显示内部网站点"被检查[内部网或所有网站],我在IE 8.0.6上尝试了我自己
| 归档时间: |
|
| 查看次数: |
146499 次 |
| 最近记录: |