如何禁用某些元素的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
}
});