有人知道如何禁用 CKEditor 的上下文(右键单击)菜单吗?我希望有一个配置选项,但我找不到。我正在使用 v3.1。谢谢。
12 回答
从 3.6.4 版开始,此问题中的其他答案不再起作用。请参阅错误 #9284
需要禁用的三个插件(使用本问题中讨论的方法)contextmenu
是liststyle
和tabletools
。例如,使用配置文件:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = 'contextmenu,liststyle,tabletools';
};
您需要删除该contextmenu
插件。见这里3.1。
编辑器4.7.1
CKEDITOR.editorConfig = function (config) {
config.language = 'en';
config.toolbar = "mini";
config.removePlugins = 'elementspath,contextmenu,liststyle,tabletools,tableselection';
config.disableNativeSpellChecker = false;
}
ckeditor 4.8.0
('elementspath'插件不再需要删除)
CKEDITOR.editorConfig = function (config) {
config.language = 'en';
config.toolbar = "mini";
config.removePlugins = 'contextmenu,liststyle,tabletools,tableselection';
config.disableNativeSpellChecker = false;
}
仍然有一个实用的解决方案,通过重写初始化contextmenu
行为的原型函数:
CKEDITOR.dom.element.prototype.disableContextMenu = function () {
this.on( 'contextmenu', function( event ) {
// your contextmenu behavior
});
};
注意:当 CKEDITOR 动态加载其 JS 资源时,您需要将其放置在replace
调用之前。
我需要禁用以下所有功能才能使其正常工作。
config.removePlugins = 'language,tableresize,liststyle,tabletools,scayt,menubutton,contextmenu';
以前我们不需要语言或 tableresize - 但新版本的 ckeditor 似乎需要它。
我在查看 chrome 上的 F12 开发工具的输出时发现了这一点。
contextmenu
您可以在您的站点的 F12 控制台窗口中使用以下代码段找出您的特定 CKEditor 构建中需要哪些插件(假设您也有 jQuery $.each
):
$.each(CKEDITOR.plugins, function(k, v){
v.requires && console.log("Plugin '" + k + "' requires: " + v.requires)
})
例如:
插件“tabletools”需要表格、对话框、上下文菜单
然后您可以使用它来帮助您config.removePlugins
- 在我的情况下:
config.removePlugins = 'tabletools,contextmenu'
对于 4.2 版,我将以下内容放在 config.js 文件的末尾
CKEDITOR.on('instanceReady', function(ev) {
ev.editor.editable().addClass('cke_enable_context_menu')
});
按住 ctrl 按钮,同时右键单击以绕过上下文菜单并访问拼写检查器等。
使用 CKEditor 3.6,我可以通过删除上面建议的 contextmenu 插件来禁用上下文菜单。为此,您必须使用 removePlugins 选项配置编辑器。例如:
CKEDITOR.replace('my_editor', {
removePlugins : 'contextmenu'
});
它也可以从 config.js 文件中全局禁用:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = 'contextmenu';
};
可以完全禁用上下文菜单,将此行添加到您的配置文件(通常是 fckconfig.js):
FCKConfig.ContextMenu = [];
不幸的是,自从 CKEditor 3.6/4.0 以来,这不再起作用了。
在 CKEditor 4.x 中,(我测试了 4.2.2)你必须同时做:
CKEDITOR.replace('my_editor', {
removePlugins : 'contextmenu'
});
和
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''liststyle,tabletools,contextmenu'';
};
如果您不禁用它们,所有这三个都将自动需要上下文菜单。