据我了解,您可以告诉IE8(我假设更高版本)如何最好地呈现您的页面。
这很有用,因为该页面可能是针对IE7,怪异模式或针对IE8标准模式而设计的。正如我所知,IE8遇到页面时的默认行为是在IE8标准模式下呈现(不知道它如何解释DOCTYPE)。使用此默认设置,用户可以通过单击刷新按钮旁边的“兼容性视图”按钮来更改渲染模式。
很高兴为用户提供一些控制权,但是当您知道您的网站只能使用IE7或其他任何东西时,它会很糟糕。在这种情况下,您不希望让用户做出错误的选择,并且这是网站告诉> = IE8浏览器如何呈现页面的能力非常有用。
您只需在head标记内提供X-UA-Compatible元标记即可。 Web上有大量的参考资料如何执行此操作以及可以使用哪些值。记得把它作为第一个。
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="X-UA-Compatible" content="IE=7" />
好的,所以到目前为止还没什么新东西 - 但是它对我的ASP.NET项目不起作用?我已经尝试过其他几个项目和同样的问题。
是否有一种情况因为我使用Visual Studio等开发人员工具,IE已被配置为始终显示“兼容性视图”按钮以进行调试?我知道在这里抓稻草。
答案 0 :(得分:0)
我发现了为什么会这样。
似乎ASP.NET的主题正在干扰。查看rendred输出时,主题中有一个动态插入的样式表标记(每个标记一个)。
ASP.NET主题引擎将这些项目插入到X-UA-Compatible元标记之上,从而打破了IE期望将其作为head元素中的第一个标记。
这是一个在源代码中包含主题和以下内容的ASP.NET站点:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="X-UA-Compatible" content="IE=7" />
将按如下方式呈现:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="ctl00_Head1">
<link href="App_Themes/White/Default.css" type="text/css" rel="stylesheet" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
这似乎是一个小错误。我将为它创建一个MS Connect问题。
答案 1 :(得分:0)
这个here有一个有趣的解决方法。我将包含要点,以使其更容易:
“styleSheetTheme”设置始终将其CSS文件放在标题中 在其他任何事情之前的顶部。之前移动“X-UA兼容” 它,您必须执行以下操作:
- 通过为服务器代码提供一个ID并添加“runat”属性,使元标记可以访问: ......
- 将以下预渲染事件处理程序添加到您的页面(或母版页):
醇>
protected void Page_PreRender(object sender, EventArgs e)
{
Control MyFirstCtrl = Page.Header.FindControl("FirstCtrlID");
Page.Header.Controls.Remove(MyFirstCtrl);
Page.Header.Controls.AddAt(0, MyFirstCtrl);
}
你可以通过这种方式移动标题中的任何东西 你在那里明确定义。