まず、OOB v4.master に戻して、問題が解決するかどうかを確認します。期待どおりに機能する場合は、マスターページに問題があることを意味します。
SP の最もばかげたバグの 1 つは、リボン コントロールの前SiteAction
にコントロールを宣言していない場合、一部の JavaScript コードが失敗することです。
カスタム マスター ページの 1 つで、リボン コントロールの直前に 2 つ目のサイト アクション コントロールを作成する必要があります。ユーザーから完全に隠すために、非表示の DIV に入れました。
それは次のようなもので終わります:
<SharePoint:SPRibbon ID="SPRibbon1" runat="server" PlaceholderElementId="RibbonContainer"
CssFile="">
<SharePoint:SPRibbonPeripheralContent ID="SPRibbonPeripheralContent1" runat="server"
Location="TabRowLeft" CssClass="ms-siteactionscontainer s4-notdlg">
<!-- Here is the hidden site actions control -->
<div style="display: none">
<SharePoint:SiteActions runat="server" AccessKey="<%$Resources:wss,tb_SiteActions_AK%>"
ID="SiteActionsMenuMain" PrefixHtml="" SuffixHtml="" MenuNotVisibleHtml="&nbsp;">
<CustomTemplate>
</CustomTemplate>
</SharePoint:SiteActions>
</div>
<asp:ContentPlaceHolder ID="PlaceHolderGlobalNavigation" runat="server" Visible="false">
<SharePoint:PopoutMenu
runat="server"
>
.... Removed for readability ....
</SharePoint:PopoutMenu>
<div class="s4-die">
<asp:ContentPlaceHolder ID="PlaceHolderGlobalNavigationSiteMap" runat="server" Visible="false">
</asp:ContentPlaceHolder>
</div>
</asp:ContentPlaceHolder>
</SharePoint:SPRibbonPeripheralContent>
<SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowRight" ID="RibbonTabRowRight"
CssClass="s4-trc-container s4-notdlg">
.... Removed for readability ....
</SharePoint:SPRibbonPeripheralContent>
</SharePoint:SPRibbon>
参考までに、この動作は、サイト アクションの内部コントロールの 1 つによるものです (私が正しい場合は、PublishingConsole)。この内部コントロールは、いくつかの JavaScript グローバル変数宣言 (言語と相互) を生成します。このグローバル変数は、リボン コントロールが期待どおりに動作するために必要です。