首页 文章

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

提问于
浏览
3

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

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

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

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

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

5 回答

  • 6

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

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

    如果你在你的页面上使用标准的html5文档类型,比如 <!DOCTYPE html> ,那么你会认为你不必担心,并且在intERnet上或多或少都是真的 . 但是,由于对微软以外的任何人都没有意义的原因,即使指定了html5文档类型, if IE is opening a page on an intRAnet it defaults to an older compatibility view, 也是如此 .

    使用你提到的 <META> 标签告诉IE总是使用它拥有的最新("edge")渲染引擎 .

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

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

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

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

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

  • 2

    请参阅Microsoft文档:

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

    注意:边缘模式仅用于测试目的;不要在 生产环境 环境中使用它 . 因为它强制所有页面都以标准模式打开,所以无论Internet Explorer的版本如何,您都可能会对使用Internet Explorer查看的所有页面使用此页面 . 请勿这样做,因为仅从Windows Internet Explorer 8开始支持X-UA兼容标头 .

    这意味着它只是为了快速测试当前仅限于特定版本的网站的最新IE版本 .

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

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

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

    作为奖励效果,当你设置X-UA-Compatible = EDGE时,IE也会隐藏地址栏中的兼容性按钮 .

  • 1

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

    看看这个:http://technowide.net/2013/06/21/forcing-ie-browsers-to-behave-properly/

  • 2

    live with its pointless-ness...

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

    因此,这个标签有助于抑制它 .

    google.com 也使用了边缘标志(尽管他们强烈主张'proper' html5,是吗?) nytimes.com 不是't use the edge flag. And -boom- there'的兼容性标志 .

    仔细观察html5推广网站... html5boilerplate.com 不具有元标记,但因此它位于http标头中 .

    in short: 看起来周围没有好办法 . 非用户面向,超级/丑陋的标志比面向用户的任何东西更好,有可能使您的页面看起来更糟或看似无效(作为最终用户's what I would conclude, whenever offered any '兼容性视图'的种类) .

  • 6

    您可以将其添加到.htacces中

    <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>
    

相关问题