禁用ckeditor版本4.4.6中的上下文菜单。

5

我在Rails4项目中使用ckeditor。我尝试过ckeditor gem和ckeditor_rails gem来提供ckeditor库。

这里有多篇帖子,希望删除ckeditor上下文菜单,以便显示浏览器本地的上下文菜单。

通常这是为了启用浏览器拼写检查器,而不是ckeditor付费/广告拼写检查器。

如何在ckeditor 4.3中删除上下文菜单

ckeditor 3.6.3启用浏览器拼写检查和禁用上下文菜单

如何禁用ckeditor上下文菜单/20229730#20229730

第三个链接回复最多,但没有一个被普遍接受。通常的回复是通过将以下内容放置在ckeditor config.js中删除contextmenu插件。

config.removePlugins = 'contextmenu';

有人建议contextmenu是其他插件的依赖项,不同的人添加了大量其他插件也需要进行删除。

一篇有用的帖子建议在控制台中运行以下代码以确定依赖关系。

$.each(CKEDITOR.plugins, function(k, v){ 
    v.requires && console.log("Plugin '" + k + "' requires: " + v.requires) 
})

这似乎运作良好,表明tabletools和liststyle插件依赖于contextmenu。因此,我们最终得到了:
config.removePlugins = 'liststyle,tabletools,contextmenu';

很遗憾,这并不能在我使用的ckeditor版本(4.4.6,通过在config.js中添加alert(CKEDITOR.version)进行确认)中禁用上下文菜单。

最后建议在config.js中使用以下代码:

CKEDITOR.on('instanceReady', function(ev) {
   ev.editor.editable().addClass('cke_enable_context_menu')
});

对于如何禁用上下文菜单的建议并没有提出,但无论如何,这对我来说都没有影响。

对于我来说,这是一个停滞不前的问题,因为 ckeditor 上下文菜单隐藏了浏览器的拼写建议,并且其中包含的剪切和粘贴选项实际上并不起作用,只会弹出浏览器对话框。

您的浏览器安全设置不允许编辑器自动执行复制操作。请使用键盘进行复制 (Ctrl/Cmd+C)。

在其他方面,ckeditor似乎是功能最好的编辑器。


config.removePlugins = 'contextmenu,tabletools'; 在4.4.7版本中对我有效。 - Damien
4个回答

4
在我的Drupal 7环境中,从CDN加载ckeditor,当前版本为4.11.4。 在尝试了多种失败的替代方案后,唯一有效的方法是:
config.removePlugins = 'liststyle,tableselection,tabletools,tableresize,contextmenu';

为方便起见,我将它放在模块配置设置->高级->自定义JavaScript配置中,但根据我的经验,在模块文件夹下的ckeditor.config.js文件中也可以实现相同的结果。(只是在更新模块时更容易被意外覆盖。...您还可以通过勾选在主题中使用config.js文件的选项,然后将上述行添加到该文件中来完成此操作。)


非常感谢。这是我唯一可行的选项。 - SimKung

1

就这么简单:

CKEDITOR.replace( 'textarea', {
    removePlugins: 'contextmenu,tabletools' 
} );

如果这并没有帮助到你,那么你需要提供一个有效的示例来重现问题,因为你的设置中可能发生了一些奇怪的事情。

这与“confg.removePlugins等”有何不同?我假设在你的示例代码中,字符串“textarea”是指textarea的id?但当我尝试在我的document.ready中使用此代码时,我收到“未捕获的编辑器实例“contact_case_notes”已附加到提供的元素。”的错误。 - giorgio

1
如果有人想要禁用CKEditor中的上下文菜单并使用浏览器本地拼写检查功能,请参考以下方法:
CKEDITOR.replace( 'editor1', {
    removePlugins: 'contextmenu,liststyle,tabletools,tableselection',
    disableNativeSpellChecker: false
} );

(在 CKEditor 4.7.0 上进行测试,使用标准包)


0

在CKEditor 4.14.0中的2023年的答案。

我尝试禁用上下文菜单,出于通常的原因。我想要启用浏览器的本地拼写检查器,而不是内置的按点击付费的广告拼写检查器。

我必须禁用以下所有内容:

config.removePlugins = 'liststyle,tableselection,tabletools,contextmenu';

你可以关注Chrome开发者工具中的控制台选项卡。如果你安装了一个重新启用上下文菜单的插件,CKEditor会在这个选项卡中产生依赖错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接