如何禁用某些元素的CKEditor上下文菜单?

如何禁用某些元素的CKEditor上下文菜单?,ckeditor,Ckeditor,我有一些带有特殊类的元素,我希望它们不允许通过上下文菜单进行编辑。 有没有办法做到这一点? 我试过: 及 我还试图将从菜单组中排除:“”,但我不能排除某些类的,只能排除所有类 PS:我需要保留上下文菜单插件,只需为某些元素删除它。我使用if和条件(三元)运算符方法隐藏和禁用上下文菜单项访问 方法1:此条件在右键单击时不显示上下文菜单项 方法2:此条件禁用contextMenu项功能 |||| })) 似乎我用test错误地测试了这一点,根本没有显示任何菜单。如果您使用测试,则即使有代码,也会显

我有一些带有特殊类的
元素,我希望它们不允许通过上下文菜单进行编辑。 有没有办法做到这一点? 我试过:

我还试图将
菜单组中排除:“”
,但我不能排除某些类的
,只能排除所有类


PS:我需要保留上下文菜单插件,只需为某些元素删除它。

我使用if和条件(三元)运算符方法隐藏和禁用上下文菜单项访问

方法1:此条件在右键单击时不显示上下文菜单项

方法2:此条件禁用contextMenu项功能 ||||


}))

似乎我用
test
错误地测试了这一点,根本没有显示任何菜单。如果您使用
测试

,则即使有代码,也会显示菜单,因此我已删除我的答案。对不起,浪费了你的时间。目前我不知道如何解决这个问题。@j.swiderski不完全。我刚刚醒来,再次测试,而不是返回真值;我只是删除了元素(上下文菜单)。您可以更正您的答案并再次发布。我唯一不知道的是,从建筑的角度来看,它是否足够正确。我使用:if(document.getElementsByClassName(“cke cke_reset_all cke_1 cke_panel cke_panel cke_menu_panel cke menu_cke ltr”).length>0)document.getElementsByClassName(“cke cke_reset_all cke_1 cke_panel cke_menu_cke menu_panel cke ltr”)[0]。删除();很抱歉,我的回复太晚了,但我在工作中有很多事情要做,在过去的几天里我真的没有时间做其他事情。您所发现的与其说是真正的解决方案,不如说是一种黑客行为,因为您不应该删除编辑器创建的DOM元素,而应该首先阻止编辑器生成这些元素。如果它对你有效,它总是可以用作临时解决方案。我将尝试给它第二次尝试,看看我是否可以想出无论如何,以防止菜单显示在某些条件下。
CKEDITOR.dtd.$nonEditable = "div(myclass)";
allowedContent: {
                    $1: {
                        elements: CKEDITOR.dtd,
                        attributes: true,
                        styles: true,
                        classes: true
                    }
                },
                disallowedContent: "div(myclass)",
var editor = CKEDITOR.appendTo('editorSpace', { toolbar: [] });
editor.on( 'instanceReady', function(e) { 
   editor.resize(200, 200); 
   editor.addCommand("myCommandEdit", {
        exec : function( editor ){          
         alert("Edit DIV"); // write your own function
      }});
   editor.addCommand("myCommandRemove", {
        exec : function( editor ){alert("Div Removed");}
    }); 
    // Listener 
  editor.contextMenu.addListener(function(element, selection ) {
  var ascendant = element.getAscendant( 'div' );
  var divCondtion = ascendant.getAttribute('class') != 'myclass';
  // Method 1
    if(divCondtion){
    return { 
        div_Edit : CKEDITOR.TRISTATE_OFF,
        div_Remove : CKEDITOR.TRISTATE_OFF 
     };
    }
  // Method 2

return { 
    div_Edit: divCondtion ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
   div_Remove: divCondtion ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
    };      
});

editor.addMenuItems({
 div_Edit : {
      label : 'Edit DIV',
      command : 'myCommandEdit',
      group : 'DivEditGroup',
      order : 1
   },
   div_Remove : {
      label : 'Remove DIV',
      command : 'myCommandRemove',
      group : 'DivEditGroup',
      order : 2
   }
});