Как отключить контекстное меню CKEditor? - PullRequest
20 голосов
/ 11 февраля 2010

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

Ответы [ 12 ]

36 голосов
/ 31 августа 2012

Начиная с версии 3.6.4, другие ответы в этом вопросе больше не работают. См. Ошибку # 9284

Три плагина, которые необходимо отключить (используя средства, обсуждаемые в этом вопросе): contextmenu, liststyle и tabletools Так, например, используя конфигурационные файлы:

CKEDITOR.editorConfig = function(config) {
    /* Your config options */
    ...
    config.removePlugins = 'contextmenu,liststyle,tabletools';
};
14 голосов
/ 11 февраля 2010

Вам необходимо удалить плагин contextmenu. См. здесь для 3.1.

4 голосов
/ 31 июля 2017

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 (плагин elementspath больше не нужно удалять)

CKEDITOR.editorConfig = function (config) {
  config.language = 'en';
  config.toolbar = "mini";
  config.removePlugins = 'contextmenu,liststyle,tabletools,tableselection';
  config.disableNativeSpellChecker = false;
}
2 голосов
/ 12 ноября 2014

Существует практическое решение, переопределяющее функцию-прототип, которая инициализирует поведение contextmenu:

CKEDITOR.dom.element.prototype.disableContextMenu = function () {
    this.on( 'contextmenu', function( event ) {
        // your contextmenu behavior
    });
};

ПРИМЕЧАНИЕ: когда CKEDITOR загружает свои JS-ресурсы динамически, вам нужно разместить его прямо перед вызовом replace.

2 голосов
/ 31 июля 2014

Мне нужно было отключить все следующее, чтобы заставить это работать.

config.removePlugins = 'language,tableresize,liststyle,tabletools,scayt,menubutton,contextmenu';

Раньше нам не требовался язык или размер таблицы - но, кажется, этого требует более новая версия ckeditor.

Я обнаружил это, глядя на вывод инструментов разработчика F12 на Chrome.

1 голос
/ 17 декабря 2014

Вы можете узнать, какие плагины требуют contextmenu в вашей конкретной сборке CKEditor, используя следующий фрагмент в окне консоли F12 на вашем сайте (предполагается, что у вас есть jQuery также для $.each):

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

Например:

Для плагина tabletools требуется таблица, диалог, контекстное меню

, который вы затем можете использовать, чтобы помочь вам с config.removePlugins - в моем случае:

config.removePlugins = 'tabletools,contextmenu'
1 голос
/ 02 августа 2013

Для версии 4.2 я помещаю следующее в конец моего файла config.js

CKEDITOR.on('instanceReady', function(ev) {
   ev.editor.editable().addClass('cke_enable_context_menu')
});
0 голосов
/ 02 июня 2018

Удерживая нажатой кнопку ctrl, щелкнув правой кнопкой мыши, чтобы обойти контекстное меню и получить доступ к проверке орфографии и т. Д.

0 голосов
/ 23 мая 2014

Можно полностью отключить контекстное меню, добавив эту строку в файл конфигурации (обычно fckconfig.js):

FCKConfig.ContextMenu = [];
0 голосов
/ 27 ноября 2013

В CKEditor 4.x (я тестировал 4.2.2) вы должны сделать оба:

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

И

CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''liststyle,tabletools,contextmenu'';
};

Все три из них будут автоматически запрашивать контекстное меню, если вы их не отключите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...