javascript - una - ¿Cómo deshabilitar el menú contextual de CKEditor?
document oncontextmenu function() return false (12)
A partir de la versión 3.6.4, las otras respuestas en esta pregunta ya no funcionan. Ver bug # 9284
Los tres complementos que deben desactivarse (utilizando los medios discutidos en esta pregunta), son el contextmenu
, el estilo de liststyle
y las tabletools
. Así por ejemplo, usando archivos de configuración:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''contextmenu,liststyle,tabletools'';
};
¿Alguien sabe cómo deshabilitar el menú contextual de CKEditor (clic derecho)? Yo esperaría una opción de configuración, pero no puedo encontrar una. Estoy usando v3.1. Gracias.
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
(el plugin ''elementspath'' ya no es necesario eliminarlo)
CKEDITOR.editorConfig = function (config) {
config.language = ''en'';
config.toolbar = "mini";
config.removePlugins = ''contextmenu,liststyle,tabletools,tableselection'';
config.disableNativeSpellChecker = false;
}
Con CKEditor 3.6 pude deshabilitar el menú contextual eliminando el complemento del menú contextual como se sugirió anteriormente. Para hacer esto, debe configurar el editor con la opción removePlugins. Por ejemplo:
CKEDITOR.replace(''my_editor'', {
removePlugins : ''contextmenu''
});
También se puede deshabilitar globalmente desde el archivo config.js:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''contextmenu'';
};
Desafortunadamente desde CKEditor 3.6 / 4.0 esto ya no funciona.
Ver informe de error: http://dev.ckeditor.com/ticket/9284
En CKEditor 4.x, (probé 4.2.2) debes hacer ambas cosas:
CKEDITOR.replace(''my_editor'', { removePlugins : ''contextmenu'' });
Y
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''''liststyle,tabletools,contextmenu'''';
};
Los tres de ellos requerirán automáticamente un menú contextual si no los desactiva.
Es posible deshabilitar completamente el menú contextual al agregar esta línea a su archivo de configuración (típicamente fckconfig.js):
FCKConfig.ContextMenu = [];
Mantenga presionado el botón de control mientras hace clic derecho para pasar por alto el menú contextual y acceder al corrector ortográfico, etc.
Necesitaba deshabilitar todo lo siguiente para que esto funcionara.
config.removePlugins = ''language,tableresize,liststyle,tabletools,scayt,menubutton,contextmenu'';
Anteriormente no necesitábamos lenguaje ni tamaño de tabla, pero una versión más nueva de ckeditor parece requerir eso.
Descubrí esto al ver la salida en F12 dev tools en Chrome.
Para la versión 4.2, coloco lo siguiente al final de mi archivo config.js
CKEDITOR.on(''instanceReady'', function(ev) {
ev.editor.editable().addClass(''cke_enable_context_menu'')
});
Puede averiguar qué complementos requieren el contextmenu
en su compilación particular de CKEditor usando el siguiente fragmento de código en una ventana de consola F12 en su sitio (se supone que también tiene jQuery por $.each
):
$.each(CKEDITOR.plugins, function(k, v){
v.requires && console.log("Plugin ''" + k + "'' requires: " + v.requires)
})
Por ejemplo:
Plugin ''tabletools'' requiere tabla, diálogo, menú contextual
Que luego puedes usar para ayudarte con tu config.removePlugins
- en mi caso:
config.removePlugins = ''tabletools,contextmenu''
Todavía hay una solución práctica, al anular la función de prototipo que inicializa el comportamiento del contextmenu
:
CKEDITOR.dom.element.prototype.disableContextMenu = function () {
this.on( ''contextmenu'', function( event ) {
// your contextmenu behavior
});
};
NOTA: cuando CKEDITOR carga dinámicamente sus recursos JS, debe colocarlo justo antes de la llamada de replace
.
Es necesario eliminar el complemento de contextmenu
. Vea here para 3.1.