9
votes

Restreindre les raccourcis clavier dans TinyMce Editor

essayer de trouver où désactiver les raccourcis de clavier individuels dans la version jQuery de TinyMce Editor. Actuellement, la liste des raccourcis autorisés est la suivante:

  • ctrl + z annuler
  • ctrl + y redo
  • ctrl + b gras
  • ctrl + i italique
  • Ctrl + U Soulignant
  • ctrl + 1-6 h1-h6
  • ctrl + 7 p
  • ctrl + 8 div
  • ctrl + 9 adresse

    cherche actuellement à désactiver tous les raccourcis mais annuler, refaire et audacieux. Les autres sont chuessaires dans notre mise en œuvre en raison de son formatage indésirable.

    Je n'arrive pas à trouver le code qui permet ces raccourcis. Pouvez-vous souligner où trouver ce code.


0 commentaires

5 Réponses :


4
votes

désactivé testé dans Firefox

Cela devrait vous aider à démarrer. Vous devrez peut-être réellement ajouter des raccourcis vides pour Ctrl + U et Ctrl + i pour le désactiver dans les autres navigateurs, mais ce code a été testé pour désactiver les actions de Firefox. Il suffit de courir après que l'initialisation de TinyMCE a été exécutée (j'ai testé la mine en Firebug): xxx

arrière-plan

il semble être défini autour de la ligne 2294 de jscripts / tiny_mce / classes / éditeur.js (du téléchargement du développement complet).

aussi, ils sont stockés dans Un tableau dans la Editor.shortcutttes variable. Les clés sont configurées avec des caractères spéciaux puis le code-clés, comme celui-ci: Ctrl , 90 .

Mais de ce que je peux dire, il semble que de nombreux navigateurs impliquent leurs propres versions de ctrl + b , ctrl + i et ctrl + u et que seuls les navigateurs gecko ne font pas: xxx

Mais si vous regardez autour de-là, vous pouvez voir comment ils l'activent.

En outre, regardez dans le Editor.addshortcut méthode. Vous pourriez être capable de remplacer le comportement par défaut.


7 commentaires

J'ai mis à jour ma réponse pour inclure un échantillon sur la manière de désactiver les raccourcis que vous n'avez pas souhaité.


Eh bien, cette réponse ne laisse rien à désirer. :) Retrait de la mine. +1


@Pekka Eh bien, merci :) Au début, je pensais que la source devait être éditée, mais leur système de raccourci est en fait assez cool.


Cela semble bien fonctionner dans Firefox, mais il ne semble pas fonctionner dans Safari, Chrome et IE. On dirait que je ne peux pas remplacer les valeurs par défaut du navigateur. Des idées à ce sujet?


@Redwolves n'a rien de travail? Ou ne sont que CTRL + I et CTRL + U ne fonctionnent pas depuis leur mise en œuvre du navigateur?


Ok, alors j'ai fait un peu de test dans Just Safari et je n'ai pas pu bloquer le raccourci en italique. Certes, je ne sais vraiment pas beaucoup sur les modes de montage dynamiques de safari et c'est-à-dire. Désolé :(


Qu'en est-il de l'ajout de Ctrl + Entrez comme un raccourci clavier?



4
votes

OK, j'ai pu obtenir cela pour travailler. J'ai pu bloquer Firefox en utilisant le code de Doug ci-dessus pour désactiver la désactivation de la clé Je voulais avoir dû ajouter ce code après le bloc de code de Doug.

var $iframe = $('iframe').contents().get(0);

$($iframe).keydown(function(oEvent) {
    //italics (ctrl+i & Cmd+i [Safari doesn't allow you to test for Cmd])
    if (oEvent.keyCode == '73' && (oEvent.metaKey || oEvent.ctrlKey)){
        oEvent.preventDefault();
        return false;
    }

    //underline (ctrl+u & cmd+u [Safari doesn't allow you to test for cmd])
    if (oEvent.keyCode == '85' && (oEvent.metaKey || oEvent.ctrlKey)){
        oEvent.preventDefault();
        return false;
    }
});


0 commentaires

3
votes

Exemple de code pour passer en arrière à partir de l'autorisation de I b et U en IE et FF.

var ctrlKey = false;

function removeShortcuts(){
  var e = tinyMCE.activeEditor;
  for (var s in e.shortcuts){
    if(s=="ctrl,,,73" || s=="ctrl,,,85" || s="ctrl,,,66"){
      e.shortcuts[s].func = function(){};
    }
  }
  e.onKeyUp.add(onKeyUp);
  e.onKeyDown.add(onKeyDown);
}

function resetShortcuts(){
  var e = tinyMCE.activeEditor;
  if (isGecko) {
    e.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
    e.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
    e.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
  }
  e.onKeyUp.remove(onKeyUp);
  e.onKeyDown.remove(onKeyDown);
}


function onKeyUp(editor, event){
  if(event.keyCode == 17){
    ctrlKey = false;
  }
}

function onKeyDown(editor, event){
  if(event.keyCode == 17){
    ctrlKey = true;
  }
  if(ctrlKey && (event.keyCode == 73 || event.keyCode == 85 || event.keyCode == 66){
    tinymce.dom.Event.cancel(event);
  }
}


0 commentaires

8
votes

Même si cela a une réponse acceptée, je partagerais ce que j'utilise avec Tinymce4. Vous pouvez simplement ajouter Editor.addshortcut ('Ctrl + u', "" "") à la méthode d'événement init dans la méthode Configuration , qui remplacera le raccourci supplémentaire

Exemple: xxx

Vous pouvez remplacer tout raccourci que vous souhaitez remplacer Pour désactiver avec ctrl + u dans le code ci-dessus.


2 commentaires

J'ai fait exactement cela et cela n'avait eu aucun effet? Ctrl + U souligne toujours.


Ma version TinyMCE est 4.7.9