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

Posted

技术标签:

【中文标题】在 SharePoint 2010 中覆盖 X-UA 兼容元【英文标题】:overwrite X-UA-Compatible meta in SharePoint 2010 【发布时间】:2014-12-03 02:49:05 【问题描述】:

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

我无权访问母版页来更改它。 此外,我还读到不建议更改母版页中的元数据,因为它可能会导致其他内容(如日历或其他内容)出现问题。

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

【问题讨论】:

【参考方案1】:

如果您可以编辑母版页并且只想更改特定页面的兼容性,您可以对 buli 采取类似的方法(谢谢),但会覆盖元标记的现有内容。 对于母版页中的元标记,给它一个 id 和 runat server

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

在您的页面加载中,从 master 中找到控件,转换为 htmlMeta 并更改 Content

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

【讨论】:

如果您可以编辑母版页,那么就没有问题了吗?【参考方案2】:

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

通过X-UA-compatible HTTP 标头:Web 服务器已通过 HTTP 标头请求旧文档模式。 通过X-UA-compatible 元标记:网页开发者使用元标记来指定遗留文档模式。

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

页面上遇到的第一个X-UA-compatible 元标记似乎被 IE 使用(尽管它在不同的文章中模棱两可并且在 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 中的 Edge 模式。

【讨论】:

“缺少文档”记录在这里(可能以前没有):docs.microsoft.com/en-us/openspecs/ie_standards/ms-iedoco/…

以上是关于在 SharePoint 2010 中覆盖 X-UA 兼容元的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint 2010升级到SharePoint 2013

如何在 SharePoint 2010 中查看/编辑 SQL 表的扩展属性 [重复]

SharePoint 2010 用户控件保存属性

在 SharePoint 2010 中合并多个列表

Sharepoint 2010 在 jquery/javascript 中捕获 webpart 刷新

SharePoint 2010 到 SharePoint 2013 的迁移