2010-05-30 2 views
3

d'abord l'arrière-plan:Annuler la page des raccourcis clavier avant/arrière dans Firefox avec Greasemonkey

Dans Firefox 3.6.3 sous Mac OS X 10.5.8 lorsque vous entrez du texte dans une norme de la combinaison de touches de commande + Leftarrow et Commande + Rightarrow passer le curseur au début/à la fin de la ligne en cours, respectivement. Cependant, lorsque vous utilisez CKEditor, FCKEditor et YUI Editor, Firefox ne semble pas complètement reconnaître qu'il s'agit d'une zone de texte. Au lieu de cela, il revient à la fonction par défaut pour les raccourcis clavier qui doit revenir en arrière dans l'historique du navigateur. Après que cela se produit, le texte dans l'éditeur est également effacé lorsque vous revenez à la page, ce qui rend très facile de perdre tout ce qui est travaillé.

Je tente d'écrire un script greasemonkey que je peux utiliser pour capturer les événements et empêcher l'exécution des sauts de retour/retour de page. Jusqu'à présent, je suis en mesure de voir les événements avec le suivant comme un script Greasemonkey .user.js dans:

document.addEventListener('keypress', function (evt) { 
// grab the meta key 
var isCmd = evt.metaKey; 

// check to see if it is pressed 
if(isCmd) 
{ 
    // if so, grab the key code; 
    var kCode = evt.keyCode; 

    if(kCode == 37 || kCode == 39) 
    { 
    alert(kCode); 
    } 
} 

}, faux ); Lorsqu'elle est installée/activée, l'appui sur commande + gauche | touche flèche droite fait apparaître une alerte avec le code correspondant, mais dès que la boîte de dialogue est fermée, le navigateur exécute le déplacement de la page vers l'avant ou vers l'arrière. J'ai essayé de définir un nouveau code avec evt.keyCode = 0, mais cela n'a pas fonctionné. Donc, la question est, est-ce que ce script Greasemonkey peut être mis à jour afin qu'il empêche le déplacement de la page arrière/avant?

(NOTE: Je suis ouvert à d'autres solutions.) Pas nécessairement Greasemonkey, c'est juste la direction que j'ai essayée Le vrai but est de pouvoir désactiver la fonctionnalité de raccourci direct/arrière.

+0

J'ai essayé plusieurs fois, mais pour une raison quelconque, l'extrait de code ci-dessus ne reste pas dans la zone en surbrillance. Si vous copiez ceci, assurez-vous d'avoir le dernier "}, faux);" partie. –

Répondre

2

Ajouter après alert(kCode); Cela devrait le faire la plupart du temps.

mai aussi ajouter:

evt.preventDefault(); 
and/or 
evt.stopPropagation(); 

Ces deux fonctions fonctionnent sur la plupart des éditions FF, mais je ne suis pas sûr du Mac. Aussi, habituellement, votre func se déclenchera après le script de l'éditeur. Mais, s'il tire avant, il pourrait désactiver ce saut de curseur.

+0

evt.preventDefault(); je l'ai. Il le fait, en effet désactiver le saut de curseur aussi bien, mais je suis d'accord avec cela. Je préfère faire cela manuellement plutôt que de perdre des données. code complet est: document.addEventListener ('keypress', fonction (evt) { // saisir les méta clé var = isCmd evt.metaKey; // vérifier pour voir si elle est pressée si (isCmd) {// le cas échéant, saisir le code clé; var kCode = evt.keyCode; // voir si elle est à gauche ou à droite du clé if (kCode == 37 || kCode == 39 { // empêche le déclenchement par défaut si c'est le cas evt.preventDefault(); } } }, faux ); –

Questions connexes