Подтвердить что ты не робот

Как отключить контекстное меню CKEditor?

Кто-нибудь знает, как отключить контекстное меню CKEditor (контекстное меню)? Я бы ожидал вариант конфигурации, но я не могу его найти. Я использую v3.1. Спасибо.

4b9b3361

Ответ 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 = [];