Comment désactiver le menu contextuel CKEditor?
est-ce que quelqu'un sait comment désactiver le menu contextuel de CKEditor (clic droit)? Je m'attendais à une option de configuration, mais je n'en trouve pas. Je suis à l'aide de la v3.1. Grâce.
12 réponses
à partir de la version 3.6.4, les autres réponses à cette question ne fonctionnent plus. voir bogue n ° 9284
Les trois plugins qui doivent être désactivés (en utilisant les moyens discuté de cette question), sont contextmenu
,liststyle
et tabletools
. Ainsi, par exemple, l'utilisation de fichiers de configuration:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = 'contextmenu,liststyle,tabletools';
};
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' plugin n'est plus besoin de supprimer)
CKEDITOR.editorConfig = function (config) {
config.language = 'en';
config.toolbar = "mini";
config.removePlugins = 'contextmenu,liststyle,tabletools,tableselection';
config.disableNativeSpellChecker = false;
}
j'ai dû désactiver tout ce qui suit pour que cela fonctionne.
config.removePlugins = 'language,tableresize,liststyle,tabletools,scayt,menubutton,contextmenu';
auparavant, nous n'avions pas besoin de langage ou tableresize - mais une version plus récente de ckeditor semble l'exiger.
j'ai découvert cela en regardant la sortie dans les outils de développement F12 sur chrome.
il y a encore une solution pratique, en supplantant la fonction prototype qui initialise contextmenu
comportement:
CKEDITOR.dom.element.prototype.disableContextMenu = function () {
this.on( 'contextmenu', function( event ) {
// your contextmenu behavior
});
};
NOTE: lorsque CKEDITOR charge ses ressources JS dynamiquement, vous devez le placer juste avant le replace
appel.
Pour la version 4.2, j'ai mis à la fin de ma config.fichier js
CKEDITOR.on('instanceReady', function(ev) {
ev.editor.editable().addClass('cke_enable_context_menu')
});
Vous pouvez trouver quels plugins nécessitent contextmenu
dans votre construction particulière de CKEditor en utilisant L'extrait suivant dans une fenêtre de console F12 dans votre site (suppose que vous avez jQuery aussi pour $.each
):
$.each(CKEDITOR.plugins, function(k, v){
v.requires && console.log("Plugin '" + k + "' requires: " + v.requires)
})
Par exemple:
Plugin 'tabletools" exige de la table,la boîte de dialogue,contextmenu
que vous pouvez utiliser pour vous aider avec votre config.removePlugins
- dans mon cas:
config.removePlugins = 'tabletools,contextmenu'
avec CKEditor 3.6 j'ai pu désactiver le menu contextuel en supprimant le plugin contextmenu comme suggéré ci-dessus. Pour ce faire, vous devez configurer l'éditeur avec l'option removePlugins. Par exemple:
CKEDITOR.replace('my_editor', {
removePlugins : 'contextmenu'
});
il peut aussi être désactivé globalement à partir de la configuration.fichier js:
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = 'contextmenu';
};
malheureusement depuis CKEditor 3.6 / 4.0 cela ne fonctionne plus.
voir le rapport de bogue:http://dev.ckeditor.com/ticket/9284
Dans CKEditor 4.x, (je l'ai testé 4.2.2), vous devez faire les deux:
CKEDITOR.replace('my_editor', {
removePlugins : 'contextmenu'
});
Et
CKEDITOR.editorConfig = function(config) {
/* Your config options */
...
config.removePlugins = ''liststyle,tabletools,contextmenu'';
};
tous les trois nécessiteront automatiquement contextmenu si vous ne les désactivez pas.
il est possible de désactiver complètement le menu contextuel en ajoutant cette ligne à votre fichier de configuration (tipiquement fckconfig.js):
FCKConfig.ContextMenu = [];
maintenez le bouton ctrl enfoncé pendant le clic droit pour contourner le menu contextuel et accéder au vérificateur d'orthographe, etc.