2014-10-08 128 views
7

我正在使用SharePoint 2010,並且我想爲特定頁面使用 <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 。 母版頁設置爲「IE = 8」,這不允許我在CSS中使用box-shadow,例如覆蓋SharePoint 2010中的X-UA兼容元

我無權訪問masterpage以進行更改。 另外我已經讀過,不推薦在母版頁中更改該元,因爲它可能會導致與日曆等任何其他事情的問題。

所以我的Q是:有什麼方法可以在簡單的頁面(.aspx)中覆蓋X-UA兼容元標記嗎?

回答

7

其中ways to change the compatibility mode他們兩個頁面看起來有前途:

  • 通過X-UA-compatibleHTTP頭:Web服務器請求通過HTTP頭中的遺留文件模式。
  • Via 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中的邊緣模式。

+1

莫非這用JavaScript完成? – Batman 2016-03-28 00:49:32

0

如果你可以編輯母版頁,只想改變特定頁面的兼容性,你可以採取類似的方法buli(謝謝),但覆蓋元標記的現有內容。 ,爲您在母版頁meta標籤,給它一個id和RUNAT服務器

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

在你的頁面加載,找到主控制,轉換爲HtmlMeta和更改內容

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

如果你可以編輯母版頁,那麼這裏沒有問題嗎? – Mukus 2016-11-30 23:47:36