IE9有时会切换到文档模式:IE7标准

时间:2013-05-14 17:41:31

标签: html asp.net internet-explorer compatibility

我认为对于那些更熟悉IE浏览器模式的人来说,这可能是一个快速简单的问题。

我们有一个内部网应用程序窗口,有时根据开发工具切换到“文档模式:IE7标准”(带浏览器模式:IE9) - 实际上相对较少,所以很难确切地说明是什么导致了这个问题。结果是表单字段全部混乱,CSS /浮点数偏差,脚本无法正常工作等等。一旦出现问题,解决问题的唯一方法是完全关闭浏览器并重新启动Internet Explorer。

我们终于在他们遇到故障时找到了用户,打开了开发工具,并确认文档模式已将自己设置为IE7并将其更改回IE9修复了所有内容。但是,一旦它将自己设置为IE7,将其恢复到IE9的唯一方法就是关闭浏览器。否则,如果您只关闭窗口而不关闭整个浏览器,则每次打开窗口时都会返回IE7。

我不知道是什么原因导致这个问题间歇性地发生。我认为这可能与Doctype有关?有人可以提供任何建议吗?

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AppScreen.aspx.cs" Inherits="Project.AppScreen" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link href="~/Styles/AppScreen.css" rel="Stylesheet" type="text/css" />
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <title>Title</title>

    <script type="text/javascript">
    //A couple other quickie scripts
    </script>
</head>

2 个答案:

答案 0 :(得分:2)

你说你想找出问题的根源,所以这里是:

IE有一个配置设置,指定对本地Intranet上的站点使用兼容模式。此配置设置默认为开启。

此设置用于帮助正在升级其IE版但不想升级其Intranet软件的企业。

问题当然是许多内联网不属于这一类;您希望IE甚至在您的Intranet上使用其最佳模式。但是该设置必须具有默认的一种方式,并且Microsoft选择将其默认为开启。

因此,您的解决方案是绕过Intranet上的PC并关闭设置。 (有些用户可能已经将其自行关闭,或者通过他们的安装设置了这种方式,这可以解释为什么每个人都不会这样做。)

或者,您可以将元标记强制IE使用您的首选模式:

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

在这里,IE=edge告诉IE使用其最佳可用模式,而不是将其修复为特定的IE版本。

老实说,最好将这个元标记放入你的代码中,以避免任何可能将IE设置为错误模式的剩余用户的随机问题。

如果您不希望它混淆HTML代码,您也可以将X-UA-Compatible标记指定为http标头。

最后,略微偏离主题,但值得注意的是,“本地内部网”的定义还包括在您自己的PC上运行的任何网站。这意味着此设置通常会捕获正在使用localhost但不了解设置的新手Web开发人员。

答案 1 :(得分:1)

尝试将其放在<head>标记中:

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