Кто-нибудь знает, как отключить контекстное меню CKEditor (контекстное меню)? Я бы ожидал вариант конфигурации, но я не могу его найти. Я использую v3.1. Спасибо.
Как отключить контекстное меню CKEditor?
Ответ 1
Вам нужно удалить плагин contextmenu
. См. здесь для 3.1.
Ответ 2
Начиная с версии 3.6.4, другие ответы в этом вопросе больше не работают. См. ошибку # 9284
Три плагина, которые необходимо отключить (используя средства, обсуждаемые в этом вопросе), - это contextmenu
, liststyle
и tabletools
. Так, например, используя файлы конфигурации:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = 'contextmenu,liststyle,tabletools';
};
Ответ 3
Мне нужно было отключить все следующие, чтобы заставить это работать.
config.removePlugins = 'language,tableresize,liststyle,tabletools,scayt,menubutton,contextmenu';
Раньше нам не нужен язык или tableresize, но, похоже, требует более новая версия ckeditor.
Я обнаружил это при просмотре вывода в инструментах F12 dev на хроме.
Ответ 4
По-прежнему существует практическое решение, переопределяя функцию прототипа, которая инициализирует поведение contextmenu
:
CKEDITOR.dom.element.prototype.disableContextMenu = function () {
this.on( 'contextmenu', function( event ) {
// your contextmenu behavior
});
};
ПРИМЕЧАНИЕ. Когда CKEDITOR динамически загружает свои ресурсы JS, вам необходимо разместить его прямо перед вызовом replace
.
Ответ 5
Для версии 4.2 я поставил следующее в конце моего файла config.js
CKEDITOR.on('instanceReady', function(ev) {
ev.editor.editable().addClass('cke_enable_context_menu')
});
Ответ 6
Вы можете узнать, какие плагины требуют contextmenu
в вашей конкретной сборке CKEditor, используя следующий фрагмент в окне консоли F12 на вашем сайте (предполагается, что у вас есть jQuery также для $.each
):
$.each(CKEDITOR.plugins, function(k, v){
v.requires && console.log("Plugin '" + k + "' requires: " + v.requires)
})
Например:
Плагин tableools требует таблицы, диалога, контекстного меню
Что вы можете использовать, чтобы помочь вам с вашим config.removePlugins
- в моем случае:
config.removePlugins = 'tabletools,contextmenu'
Ответ 7
Ckeditor 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
(плагин'pathpath 'больше не нужно удалять)
CKEDITOR.editorConfig = function (config) {
config.language = 'en';
config.toolbar = "mini";
config.removePlugins = 'contextmenu,liststyle,tabletools,tableselection';
config.disableNativeSpellChecker = false;
}
Ответ 8
С CKEditor 3.6 мне удалось отключить контекстное меню, удалив плагин contextmenu, как было предложено выше. Для этого вам нужно настроить редактор с помощью опции removePlugins. Например:
CKEDITOR.replace('my_editor', {
removePlugins : 'contextmenu'
});
Он также может быть отключен глобально из файла config.js:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = 'contextmenu';
};
Ответ 9
К сожалению, поскольку CKEditor 3.6/4.0 это больше не работает.
См. отчет об ошибке: http://dev.ckeditor.com/ticket/9284
Ответ 10
В CKEditor 4.x(я тестировал 4.2.2) вы должны сделать оба:
CKEDITOR.replace('my_editor', {
removePlugins : 'contextmenu'
});
и
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''liststyle,tabletools,contextmenu'';
};
Все три из них автоматически потребуют контекстного меню, если вы не отключите их.
Ответ 11
Можно полностью отключить контекстное меню, добавив эту строку в ваш файл конфигурации (tipically fckconfig.js):
FCKConfig.ContextMenu = [];