首页 文章

使用标记强制关闭IE兼容模式

提问于
浏览
341

我正在为在所有Intranet站点上强制兼容模式的客户端工作 . 我想知道是否有一个标签可以放入我的HTML中强制兼容模式关闭 .

12 回答

  • 23

    正如answer中对相关问题的建议,可以在Web.Config文件中设置"edge"模式 . 这将使其适用于从应用程序返回的所有HTML,而无需将其插入单个页面:

    <configuration>
        <system.webServer>
            <httpProtocol>
                <customHeaders>
                    <add name="X-UA-Compatible" value="IE=edge" />
                </customHeaders>
            </httpProtocol>
        </system.webServer>
    </configuration>
    

    对于IIS服务器,整个网站或特定应用程序,modifying the "HTTP Response Headers" using IIS Manager也可以完成同样的步骤 .

  • 0

    元标记解决方案不适合我们,但在响应头中设置它:

    header('X-UA-Compatible: IE=edge,chrome=1');
    
  • 26

    这是因为IE兼容性设置中的设置表明所有Intranet站点都应以兼容模式运行 . 您可以通过组策略解除此问题(或者只是简单地在IE中取消它),或者您可以设置以下内容:

    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    

    显然,不可能将兼容性视图设置更改为组策略,但它可以在注册表中更改,这个元标记对我来说很好,我必须使必需的属性作为html表单的一部分工作,它适用于chrome和firefox,但不适用于IE .

    这是一个很好的视觉,了解哪些浏览器支持每个单独的html 5元素 .

    http://html5readiness.com/

    请注意一个共同点谷歌Chrome,它支持一切 . 希望这有帮助

  • 16

    IE8默认为intRAnet的标准模式和intRAnet的quirks模式 . 如果您将doctype设置为xhtml transitional,则会忽略HTML元标记 . 解决方案是在代码中添加HTTP标头 . 这对我们有用 . 现在我们的Intranet站点正在强制IE8以标准模式呈现应用程序 .

    添加到基页类的PageInit(ASP.net C#):

    Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
    

    参考:http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html

  • 87

    如果您希望每个单独的网页加载所选内容并使用asp.net . 只需将其应用为Views> shared> Layout.cshtml中 Headers 标记下的第一个标记即可

    只是一个提示

  • 3

    如果您正在使用Intranet区域中的某个页面,您可能会发现IE9无论您做什么,都会进入IE7 Compat模式 .

    这是因为IE兼容性设置中的设置表明所有Intranet站点都应以兼容模式运行 . 您可以通过组策略解除此问题(或者只是简单地在IE中取消它),或者您可以设置以下内容:

    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    

    这有效(详见其他答案),但最初可能不会出现: it needs to come before the stylesheets are declared . 如果不这样做,则会被忽略 .

  • 0

    我相信这会解决问题:

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    
  • 7

    There is the "edge" mode .

    <html>
       <head>
          <meta http-equiv="X-UA-Compatible" content="IE=edge" />
          <title>My Web Page</title>
       </head>
       <body>
          <p>Content goes here.</p>
       </body>
    </html>
    

    从链接的MSDN页面:

    边缘模式告诉Windows Internet Explorer以可用的最高模式显示内容,这实际上打破了“锁定”范例 . 使用Internet Explorer 8,这相当于IE8模式 . 如果Internet Explorer的(假设的)未来版本支持更高的兼容性模式,则设置为“边缘”模式的页面将以该版本支持的最高模式显示;但是,使用Internet Explorer 8查看时,这些相同的页面仍将以IE8模式显示 .

    但是,在 生产环境 使用中不鼓励“边缘”模式:

    建议Web开发人员限制他们使用Edge模式来测试页面和其他非 生产环境 用途,因为在未来版本的Windows Internet Explorer中呈现页面内容可能会出现意外结果 .

    老实说,我不完全理解为什么 . 但据此,目前最好的方法是使用 IE=8 .

  • 493

    根据我最近的经验,关于这个主题的几点说明 . 我工作的大学用IE 8设置了适用于所有Intranet站点的兼容模式的笔记本电脑 . 我尝试添加元标记以禁用我的网站提供的页面的此模式,但IE始终忽略此标记 . 正如Lance在他的帖子中提到的那样,添加一个响应头修复了这个问题 . 这是我根据HTML5样板方法设置标头的方法:

    <IfModule mod_headers.c>
      Header set X-UA-Compatible "IE=edge,chrome=1"
      # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
      <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
        Header unset X-UA-Compatible
      </FilesMatch>
    </IfModule>
    

    为了实际发送此标头,您必须确保在Apache中启用了mod_headers . 如果你想确保你打开这个mod,把它放在一个可以运行php的页面中:

    <pre>
    <?php
        print_r(apache_get_modules());
    ?>
    </pre>
    
  • 0

    插入标签下的第一个项目 .

    这会强制IE在IE的物理版本中呈现页面,并忽略浏览器“模式设置” . 这可以在开发人员工具中设置,尝试将其更改为旧版本的IE进行测试,这应该被忽略,页面应该看起来完全一样 .

  • 10

    几个小时后对这些东西进行故障排除...以下是一些快速亮点,帮助我们从 X-UA-Compatible docs:http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16

    使用 <meta http-equiv="X-UA-Compatible" content=" _______ " />

    • 标准用户代理模式(非模拟用户模式)忽略页面中的 <!DOCTYPE> 指令,并根据该版本的IE支持的标准进行渲染(例如, IE=8 将更好地遵循表边界间距和一些伪选择器而不是 IE=7 ) .

    • 然而,模仿模式告诉IE遵循页面中的任何 <!DOCTYPE> 指令,根据您选择的版本呈现标准模式,并根据 IE=5 呈现怪癖模式

    • content 属性的可能值为:

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"

  • 60

    如果您可以访问服务器,那么最可靠的方法是在IIS中的服务器本身上执行此操作 . 进入IIS HTTP响应标头 . 添加名称:X-UA兼容
    值:IE = edge这将覆盖您的浏览器和代码 .

相关问题