覆盖SharePoint 2010中的X-UA兼容元

时间:2014-10-08 12:31:21

标签: sharepoint-2010 internet-explorer-10 x-ua-compatible

我正在使用SharePoint 2010,我想使用它 <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 对于特定页面。 母版页将其设置为&#34; IE = 8&#34;这不允许我在CSS中使用box-shadow,例如

我无法访问母版页进行更改。 另外我已经读过,不建议在母版页中更改该元素,因为它可能会导致日历或其他内容等问题。

所以我的问题是:有没有办法在一个简单的页面(.aspx)中覆盖X-UA-Compatible元标记?

2 个答案:

答案 0 :(得分:7)

ways to change the compatibility mode中,第二页似乎很有希望:

  • 通过X-UA-compatible HTTP标头:网络服务器通过HTTP标头请求了旧文档模式。
  • 通过X-UA-compatible 元标记:网页开发人员使用元标记指定旧文档模式。

SharePoint 2010的默认母版页硬编码X-UA-Compatible元标记,元标记优先于HTTP标头,因此无法在HTTP级别上执行此操作。这给我们留下了第二个选择。

似乎IE上使用了页面上遇到的第一个X-UA-compatible元标记(虽然它在不同文章中含糊不清,但在MSDN文档中缺失)。如果您编写SharePoint UserControl或WebPart,则可以添加此代码,例如在Page_Load()方法中添加此标头作为第一个:

 HtmlMeta metaEdgeIE = new HtmlMeta();
 metaEdgeIE.HttpEquiv = "X-UA-Compatible";
 metaEdgeIE.Content = "IE=EDGE";
 Page.Header.Controls.AddAt(0, metaEdgeIE);

其中HtmlMeta来自System.Web.UI.WebControls命名空间。

通过迭代Page.Header.Controls,您可能还可以找到并删除SharePoint默认添加的元标记,尽管上面的代码似乎足以在IE11中触发边缘模式。

答案 1 :(得分:0)

如果您可以编辑母版页并且只想更改特定页面的兼容性,则可以采用与buli类似的方法(谢谢),但会覆盖元标记的现有内容。 对于母版页中的元标记,请为其指定一个id和runat服务器

<meta id="metaIE" runat="server" http-equiv="X-UA-Compatible" content="IE=edge">

在页面加载中,从master中找到控件,强制转换为HtmlMeta并更改内容

Dim metaIE = DirectCast(Master.FindControl("metaIE"), HtmlMeta)
metaIE.Content = "IE=10"