如何强制IE10使用IE10兼容模式运行?

31

我有一个应用程序在IE10中出问题,但在IE10兼容性视图中运行正常。快速谷歌搜索结果如下:

<meta http-equiv="X-UA-Compatible" content="IE=8">
<!-- plus variations such as emulate, quirks, 7, 8, 9 --->

tag。关于这个标签的微软文档可以在这里找到。如果按F12,您会发现它会更改文档模式。我需要将浏览器模式更改为Internet Explorer 10兼容性视图。有没有标签可以做到这一点?

enter image description here

更新 我需要说明尝试过下列所有文档类型但都不起作用。我认为在IE10中使其工作的唯一方法是使用兼容性视图。

<!--
    <!DOCTYPE html>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    TRIED NO DOCTYPE AT ALL TOO
-->

1
我有完全相同的问题。 - Ed Graham
12
最好的解决方案是修复导致您需要兼容性视图的问题。这将更加可持续,并有可能提高性能。你在使用IE10标准方面遇到了哪些问题?也许我们可以解决这些问题。 - David Storey
1
如果您可以描述在不运行兼容模式时出现的问题,那么这些问题可以得到解决。很难理解您所说的“在IE10中崩溃”的意思。 - Adam Casey
基本上,确保服务器在头部中没有发送不同的X-UA_Compatible。可以使用JavaScript或HTML打开IE 10兼容视图吗? - Shawn Balestracci
8个回答

15
如果您想在浏览器本身而不是HTML中设置兼容模式,请按照以下步骤操作:
  1. 打开IE 10
  2. 按下ALT键以打开IE菜单栏
  3. 点击工具菜单
  4. 点击兼容性视图设置。
  5. 勾选“显示所有网站的兼容性视图”框,或者
  6. 仅将所需的网站添加到兼容性视图中
如下图所示。然后该网站应在IE 10兼容性视图中打开。

enter image description here


这似乎是使“兼容性视图”生效的唯一方法。 - Alex Nolasco

11

你可以尝试:

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

就像您之前尝试过的那样,但请注意:

似乎X-UA-Compatible标签必须是<head>部分中的第一个标签

如果这个结论是正确的,那么我认为它在微软的博客/msdn中没有记录(如果有记录,那么它与文档的区别不够明显)。确保这是第一个在<head>中的meta标签,可以成功地强制IE9切换到IE8模式。


需求已在此处记录:http://msdn.microsoft.com/zh-cn/library/ie/jj676915.aspx - mss
2
这不会改变浏览器模式,而是文档模式。我不知道是否有任何区别,但到目前为止,我只能使用元标记切换后者。另一方面,后者足以使我遇到问题的页面再次运行。 - noamik
我应该把这行代码放在哪里? - a06e
在你的HTML文件的<head>标签中(抱歉耽搁了)。 - Pouki

6
我曾经遇到过同样的问题,这个 "meta http-equiv="X-UA-Compatible" content="IE=7">" 可以在 IE8 和 IE9 中很好地工作,但在 IE10 中却不行。.NET 2.0 和 .NET 4 随附的服务器浏览器定义文件中存在一个 bug,即它们包含某些浏览器版本的定义。但是一些浏览器(如 IE 10)的版本已经不在这些范围内了。因此,ASP.NET 将它们视为未知浏览器,并默认使用下一级定义,这会带来某些不便,比如它不支持 JavaScript 等功能。

感谢 Scott Hanselman 提供的解决方案。

这是链接 -

http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

这个 MS KP 修复程序只是在您的服务器上添加了缺少的 asp.net 文件。我安装了它并重新启动了我的服务器,现在它完美地工作了。我本以为微软会更广泛地分发这个修复程序。

5

我曾经遇到过同样的问题。这个问题是MSIE 10中的一个bug,所以告诉人们去解决他们的问题是没有帮助的。而且,告诉访问您网站的人将您的网站添加到兼容性视图中也不是一个好方法。在我的情况下,问题是以下代码未显示任何文本:

document.write ('<P>'); 
document.write ('Blah, blah, blah... ');
document.write ('</P>');

经过多次试验,我发现删除<P>和</P>标签可以使文本在页面上正确显示(因此,在我的情况下问题确实是出现在文档模式而不是浏览器模式)。但是,当userAgent为MSIE时删除<P>标签并不是我想要放入我的页面的“修复”方法。
正如其他人所说,解决方案是:
<!DOCTYPE HTML whatever doctype you're using....> 
<HTML>
 <HEAD>
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
  <TITLE>Blah...

是的,meta标签必须在HEAD标签之后的第一个标签。


4

尽管应该修复您的网站,使其无需兼容性视图,但请尝试将X-UA-Compatible元标记放置在打开的<head>标签之后的第一件事,标题之前。


1
< p > X-UA-Compatible meta 元素仅更改文档模式,而不是浏览器模式。在页面请求之前选择浏览器模式,因此无法包含任何标记、JavaScript或其他内容来更改它。虽然文档模式回退到呈现引擎的旧标准和怪异模式,但浏览器模式只更改浏览器的识别方式,例如用户代理字符串。

如果您想为所有用户更改浏览器模式(而不是通过工具或设置手动更改),唯一的方法(据我所知)是将您的网站添加到 Microsoft 的兼容性视图列表中。这由 Microsoft 维护,用于应用于破解的站点覆盖。有有关如何从兼容性视图列表中删除您的站点的信息,但我找不到要求添加的信息。

然而,首选方法是首先尝试修复站点上的任何问题,因为当您不使用最新的文档和浏览器模式时,您无法利用浏览器中的改进,例如提高性能。


对于许多网络应用程序来说,修复问题并不是一个选择。特别是当解决方案是完全替换软件,并且在此之前需要进行修复时。 - Underverse

1

0

你应该尝试使用IE 5怪异模式兼容性(是默认的IE10兼容性视图)

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

重要提示:如果您使用 iframe 结构,请将此代码放置在顶部。

更多信息 12


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接