我正在开发 SharePoint 2010,我想
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
用于特定页面。母版页将其设置为“IE=8”,这不允许我在 CSS 中使用 box-shadow,例如
我无权访问母版页来更改它。此外,我还读过不建议在母版页中更改该元数据,因为它可能会导致其他事情(如日历或其他内容)出现问题。
所以我的问题是:有没有办法覆盖简单页面(.aspx)中的 X-UA 兼容元标记?
我正在开发 SharePoint 2010,我想
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
用于特定页面。母版页将其设置为“IE=8”,这不允许我在 CSS 中使用 box-shadow,例如
我无权访问母版页来更改它。此外,我还读过不建议在母版页中更改该元数据,因为它可能会导致其他事情(如日历或其他内容)出现问题。
所以我的问题是:有没有办法覆盖简单页面(.aspx)中的 X-UA 兼容元标记?
在其中更改第二页的兼容模式的方法中似乎很有希望:
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 模式。
如果您可以编辑母版页并且只想更改特定页面的兼容性,您可以对 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"