对<meta http-equiv =“”X-UA-Compatible“”content =“”IE = edge“”/>的误解

时间:2013-07-04 09:53:50

标签: internet-explorer browser meta-tags msdn

我无法实现meta http-equiv =“X-UA-Compatible”content =“IE = edge。”的真正意义。

1)如果某些用户有某个版本的IE并且他尝试打开具体页面,该页面将在IE用户拥有的版本(最新版本)中打开。我不明白为什么我们需要那个标签来保持这个?

2)如果用户明确说他的IE(例如IE9)想要打开浏览器页面,因为某些以前的IE版本(例如IE8)会不会阻止它?

3)如果我有IE7或IE8并且此页面有元标记怎么办?该页面将在IE7或IE8中打开取决于我的计算机上最新版本的浏览器。

我真的看不到这个元标记的用途(除了用户已经调整浏览器的新版本以打开旧版本页面的情况),或者我在这里遗漏了一些东西。

5 个答案:

答案 0 :(得分:6)

请参阅Microsoft文档:

http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx

  

注意:边缘模式仅用于测试目的;不要在生产环境中使用它。

     

因为它强制所有页面都以标准模式打开,无论如何   在Internet Explorer版本中,您可能会想要使用它   对于使用Internet Explorer查看的所有页面。不要这样做,因为   仅从Windows开始支持X-UA-Compatible标头   Internet Explorer 8。

这意味着它仅用于快速测试当前仅限于特定版本的网站的最新IE版本。

要永久使用最新版本,请改用HTML5文档类型:<!DOCTYPE html> 请参阅文章中的简介:

  

在大多数情况下,我们建议网站使用HTML5文档类型   支持最广泛的既定和新兴标准,   以及最广泛的网络浏览器。

修改 我刚在另一篇SO帖子中注意到this answer。这表示如果用户由于某种原因在页面的兼容模式下运行IE,您将通过设置X-UA-Compatible = EDGE来覆盖它。这意味着,如果您知道使用最新标准最佳显示页面,即使用户已激活兼容模式,您也可以强制IE以边缘模式运行。有关可以激活兼容模式的不同方法的详细信息,请参阅the other answer

作为对此的额外效果,当您设置了X-UA-Compatible = EDGE时,IE也会隐藏地址栏中的兼容性按钮。

答案 1 :(得分:6)

  

“1)如果某些用户有某个版本的IE并尝试打开具体页面,该页面将在IE版本中打开哪个用户有(最新版本)。我不明白为什么我们需要那个标签来维持吗?“

IE 8 *及更高版本内置了多个渲染引擎.IE选择使用哪一个特定页面取决于几个因素。有时它默认为较旧的模式,所以即使您使用的是IE10,也可能打开IE7兼容性视图中的特定页面。

如果您在页面上使用标准的html5文档类型,例如<!DOCTYPE html>,那么您会认为您不必担心,并且在intERnet上或多或少都是如此。但是,由于对微软以外的任何人都没有意义的原因,如果IE在intRAnet上打开一个页面,它默认为旧兼容性视图,即使指定了html5文档类型。

使用您提到的<META>标记告诉IE始终使用它拥有的最新(“边缘”)渲染引擎。

  

“2)如果用户明确表示他的IE(例如IE9)想要打开浏览器页面,因为某些以前的IE版本(例如IE8)这个元标记是否会阻止它?” < / p>

没有。用户仍然可以使用内置开发工具来更改文档模式。

  

“3)如果我有IE7或IE8并且此页面有元标记怎么办?该页面将在IE7或IE8中打开取决于我的计算机上最新的浏览器版本。”

是。当然IE8无法在IE9模式下打开页面。但正如我上面提到的那样,meta标签会告诉你使用的IE版本是哪种版本,而不是(可能)默认使用较旧的模式。

*或者我的意思是IE 7及更高版本?我忘了。

答案 2 :(得分:2)

您可以使用元标记明确告诉IE浏览器使用其最新的可用渲染引擎。这也可以防止IE在重新发送页面时打开Quirks模式。

检查一下: http://technowide.net/2013/06/21/forcing-ie-browsers-to-behave-properly/

答案 3 :(得分:2)

以无意义的方式生活......

正如其他人所说的那样,不使用此标签会在地址栏中显示(至少在IE9中)兼容性视图图标(符号断页图标,重新加载和停止旁边)。还有完美的W3C验证<!DOCTYPE html> html5页面。看到此图标可能会触发用户按下它。这确实会导致怪癖模式,因此填充&lt; =&gt;宽度计算会更改为旧时代,并且您的页面看起来很糟糕。 (做得好,M $,这真的有帮助......)

因此这个标签有助于抑​​制它。

google.com也使用了边缘标志(尽管他们强烈主张'正确'html5,嗯?) nytimes.com不使用边缘标志。并且-boom-有兼容性标志。

仔细研究html5推广网站...... html5boilerplate.com没有图标,没有元标记,但因此它位于http标头中。

简而言之:看起来没有好办法。 一个非用户面,超级/丑陋的旗帜比任何面向用户都面临着使你的页面看起来更糟或看似无效的危险更好(作为最终用户,无论何时提供任何'兼容性视图',我都会得出结论)排序)

答案 4 :(得分:1)

您可以将此添加到.htaccess

<IfModule mod_headers.c>
    Header set X-UA-Compatible "IE=edge"
    # `mod_headers` can't match based on the content-type, however, we only
    # want to send this header for HTML pages and not for the other resources
    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
        Header unset X-UA-Compatible
    </FilesMatch>
</IfModule>