質問

ユーザーに基づくSharePoint 2010 List / Libraryのコンテキストメニューを非表示にしたい。

私は以下のJavaScript を使っています

  $(document).ready(function(){      
        $('.ms-MenuUIPopupBody').live('blur', function() {       
           var elm = $("div.ms-MenuUIULItem a:contains('View in Browser')"); 
           elm.remove();     
           $("div.ms-MenuUIULItem a:contains('Edit in Browser')").remove();  
         });
  });
.

コンテキストメニューのフォーカスまたはぼかしまたはマウスオーバー上のメニューを非表示にしています。

Core.jsファイルによって動的に生成しています

コンテキストメニューの作成時にスクリプトを追加する必要があります。

では、コンテキストメニューのイベントを見つける必要があります

画像の説明が入力されています

クリックイベントを見つけてカスタムコードを追加する方法

"Andrew"では良い解決策を見つけ、コンテキストメニューイベントを処理する

var _MenuHtc_show;  

function OverrideMenuHtc_show()
{
   _MenuHtc_show = window.MenuHtc_show;
   window.MenuHtc_show= function (m,r,fr,ft,yoff) {
      _MenuHtc_show(m,r,fr,ft,yoff); 
      var elm = $(".ms-MenuUIULItem[text='Alert Me']");
      elm.remove();       
   };
}

ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js")
.

その作業罰金は、すべてのWebPartsの非隠しコンテキストメニューです。 チェックするコンテキストメニューを見つける必要があります。チェックするのは、コンテキストメニューを非表示にするWebPartが正しいWebPartです。

このコードでWebPartを選択した後にWebPart IDを見つけることができます。

 var listId = SP.ListOperation.Selection.getSelectedList();  
.

または

var ctxCur = GetCurrentCtx();
var SPGridViewGuid = ctxCur.listName;
.

しかし、WebPartsを選択した状態で「v」シンボルをクリックした場合、そのresoutn null。

選択したWebPart IDを選択したコンテキストメニューを見つける方法はあります。 だからその問題を解決します。

役に立ちましたか?

解決

それはどうですか?

 $('.s4-ctx').css('display','none');
.

コンテキストメニューを表示するボタンを非表示にします。


指定されたIDを使用してWebパーツからコンテキストメニューを非表示にする必要がある場合は、

$("div[webpartid='85c13a33-57a3-456b-a19b-c68c97756184'] .s4-ctx").css('display','none');
.


EXのメニュー項目を削除したい場合。"alert me"標準core.js関数 "menuhtc_show"をオーバーライドするこのスクリプトを追加し、指定されたWebPartのコンテキストメニューからメニュー項目を隠します。

var _MenuHtc_show;  

function OverrideMenuHtc_show()
{
   _MenuHtc_show = window.MenuHtc_show;
   window.MenuHtc_show= function (m,r,fr,ft,yoff) {
      _MenuHtc_show(m,r,fr,ft,yoff); 
      var items = $("div[webpartid='85c13a33-57a3-456b-a19b-c68c97756184'] .ms-MenuUIULItem[text='Alert Me']");
      $(items).css('display','none');       
   };
}

ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js")
.

他のヒント

あなたが隠れ家決定を使用していないのかどうか?

>ここはそのためのMSDNです。

>ここは正しいグループを見つけるためのリソースです。P>

最終的にこれは私の問題を解決する

私は完全な機能を完全にするために「Andrew」スクリプトを強化しました。

ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js");

var _MenuHtc_show;

function OverrideMenuHtc_show() {

    _MenuHtc_show = window.MenuHtc_show;
    window.MenuHtc_show = function (m, r, fr, ft, yoff) {
        _MenuHtc_show(m, r, fr, ft, yoff);

        var ctxCur = listcontext;
    //list or library GUID
        var listid = ctxCur.listName;

    if(listid =='your list\library GUID')
    {

                var elm = $(".ms-MenuUIULItem[text='Alert Me']");
                elm.remove();

    }

    };
}
.

SharePoint 2013で同じことを実装したいと思いました。 CSSソリューションは、特定のページに対してのみ機能します。これは機能しません。

@カバリラケシュと@andrewの答えは私にとって部分的に働いた。 var ctxcur= listContext。ListContextで例外を投げていましたが、未定義です。 代わりに、getCurrentCtx()を使用してClientContextを取得しました。

しかし、ページの右上の設定COGをクリックしていたときに、次のJavaScriptエラーが発生しました。 「データフェッチでエラーが発生しました。ページを更新して再試行してください。 "

マイジャーブスクリプトコードは、マスターページヘッドのデリゲートコントロールを介して追加されました。

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control Id="AdditionalPageHead"
           Sequence="90"
           ControlSrc="~/_CONTROLTEMPLATES/15/MyCustomFolder/ECBDelegateControl.ascx" />
</Elements>
.

ユーザ制御「EcbDelegateControl.ascx」はスクリプトを下回っていた

<script type="text/javascript"  src="../../../_layouts/15/MyScripts/Script/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
        ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js");
    });

    function OverrideMenuHtc_show() {
        var ctx = GetCurrentCtx();
        var listName = ctx.ListTitle;

        if (listName == 'My First List' ||
            listName == 'My Second List') {
            var _MenuHtc_show;
            _MenuHtc_show = window.MenuHtc_show;
            window.MenuHtc_show = function (m, r, fr, ft, yoff) {
                _MenuHtc_show(m, r, fr, ft, yoff);
                var elm = $("li.ms-core-menu-item[text='Delete Item']");
                elm.remove();
            }
        };
    }
</script>
.

ClientContextはNULLで、getCurrentCtx()を呼び出す前にsp.jsをロードする必要がありました。 私が取得したJavaScriptエラーもなくなりました。 これは、core.jsファイルを変更するよりもはるかに優れたソリューションです。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top