2009-07-15 6 views
6

EDIT: Après ont attendu un certain temps et n'ont rien encore, j'ai décidé faire raccourci désactiver uniquement pour thingy IE maintenant. Est-il possible de désactiver touches de raccourci IE pour accéder aux menus/imprimer etc. via vbscript?Désactiver Internet touches de raccourci Explorateur

Est-il possible de désactiver les raccourcis du navigateur?

Parce que beaucoup d'entre eux utilisent dans l'application. Par exemple, Ctrl + p utilise et je ne veux pas que le navigateur affiche la fenêtre d'impression.

+0

Avez-vous réussi à faire fonctionner cela? J'ai le même problème et je n'ai pas encore trouvé de solution. –

+0

@DianaAmza, je n'ai pas trouvé de solution pour ça. IE ne vous permettra pas de remplacer le comportement par défaut. –

+0

D'accord, merci! –

Répondre

4

Oui, vous pouvez écouter les différentes combinaisons de touches avec javascript et désactiver les comportements par défaut. Il y a même une bibliothèque que vous pouvez utiliser et tester here. Je viens de le tester en utilisant google chrome et firefox dans leur texto de démonstration, et ça marche comme vous voulez.

shortcut.add("Ctrl+P",function() { 
    return; 
}); 

Cela fonctionne dans les navigateurs que j'énumérés ci-dessus, mais IE ne vous permettra pas de remplacer le comportement par défaut dans certains cas.

Votre seule option dans IE est de désactiver la touche Ctrl enfoncée tout à fait avec quelque chose comme:

document.onkeydown = function() { 
    if (event.keyCode == 17) alert('Ctrl Key is disabled'); 
}; 

Ce qui est pas idéale et probablement pas ce que vous voulez, mais cela fonctionnera.

+0

Obtenir la fenêtre d'impression sur Ctrl + P :( –

+0

Je viens de me fatiguer en utilisant le panneau ci-dessous "Live Execution" Je change la clé de "Ctrl + Shift + X" en "Ctrl + P" et il montre la fenêtre d'impression J'utilise firefox 3. –

+1

Il y a des actions que vous ne pouvez pas désactiver – Boldewyn

3

Vous pouvez essayer de créer un gestionnaire d'événements pour un événement de type keydown, vérifier le code de clé et empêcher son action par défaut si nécessaire. Cependant, cela ne fonctionnera pas dans tous les navigateurs.

Un exemple pour Firefox (annulation « Imprimer » touche courte, vérifiée):

document.addEventListener("keydown", function(oEvent) { 
    if (oEvent.keyCode == 80 && oEvent.ctrlKey) 
     oEvent.preventDefault(); 
}, false) 
+0

Merci Sergey. Toute idée quelque chose de similaire pour IE. –

+0

Non, supposons qu'il n'y a pas moyen d'empêcher le raccourci dans IE. Mais est-ce que cela a vraiment un sens d'essayer? L'utilisateur peut toujours imprimer ou coller du texte en accédant au menu. –

+0

Je dois désactiver certaines touches et les utiliser à d'autres fins. En fait, c'était une exigence car le système a d'abord été écrit sur un ordinateur de bureau et maintenant il se déplace sur le web. Et sur cette première phase de transformation, ils veulent que les utilisateurs aient la même expérience. L'utilisation de certaines touches fréquemment dans un but et le ctrl + p est une utilisation. –

1

Je travaille sur le même problème, hooking keyboard event ci-dessous le code fonctionne bien pour désactiver, à l'exception de l'objet flash sur l'IE n'a pas a eu l'accent. Comme j'essaie de gérer les événements de clavier sur l'objet flash, ce code ne fonctionne pas pour moi.

function hookKeyboardEvents(e) { 
    // get key code 
    var key_code = (window.event) ? event.keyCode : e.which; 

    // case :if it is IE event 
    if (window.event) 
    { 
     if (!event.shiftKey && !event.ctrlKey) { 
      window.event.returnValue = null; 
      event.keyCode = 0; 
     } 
    } 
    // case: if it is firefox event 
    else 
     e.preventDefault(); 
} 

window.document.onkeydown = hookKeyboardEvents; 
+0

Ce code empêche tous les coups de touches et fonctionne pour seulement Firefox – Oki

+0

Une chance sur quelque chose qui pourrait fonctionner pour IE aussi? –

+0

vous passez en "e", pas "événement". alors changez toutes les références à "window.event" ou utilisez "e". Ils devraient être les mêmes. –

1

De votre application après avoir appelé la méthode sur Ctrl + P juste faire le code d'activation que zero.I pense que cela va résoudre votre problème ...

window.event.keyCode = 0;

cela définira le code d'activation comme zero..So lors d'un contrôle de l'explorateur pour l'codeTouche il sera zéro ... alors la fonction par défaut ne sera pas exécuté ...

Essayez ceci ... juste une suggestion

+0

Ne fonctionnait pas pour IE11 –

0

Cela fonctionne pour moi dans IE 8. La partie importante est IE requiert que ev.returnValue soit défini sur false. NOTE: ceci ne fonctionne que si vous avez mis l'accent sur un élément du document ... c'est-à-dire, si vous chargez simplement la page et appuyez sur 'ctrl-p', vous verrez la boîte de dialogue d'impression. Mais si vous cliquez quelque part sur la page, essayez-le, il devrait supprimer la boîte de dialogue d'impression.

document.onkeydown = function (e) { 

    var ev = e||window.event; 

    // Do what I want keys to do ... 

    // Block browser short cuts 
    if(ev.preventDefault) // non-IE browsers 
     ev.preventDefault(); 
    else // IE Only 
     ev.returnValue = false; 
}; 
+1

avez-vous réellement testé cela? Parce qu'il ne semble pas fonctionner dans IE9 – Paul

+0

Oui, je l'ai eu dans la production depuis de nombreuses années et ça fonctionne bien. Cependant, il se pourrait que j'ai oublié de passer le paramètre "e" ci-dessus. Je viens de l'éditer. J'ai également ajouté une note sur le fait que cette solution ne fonctionne que lorsque votre document a un focus. Si vous ne vous concentrez pas sur la page, la boîte de dialogue d'impression apparaît. Ne pensez pas qu'il y a un moyen de contourner cela. – cakidnyc

2

Il y a une belle astuce pour se battre avec IE10 +, afin d'éviter les menus du navigateur d'affichage sur alt combinaisons de touches, comme Alt + F, Alt + H ...

J'ai récemment utilisé sur IE11, il suffit d'ajouter un point d'ancrage à la attribuer accesskey: [yourKey] sur votre corps

<body> 
    <a href="#" accesskey="f"></a> 
    <script type="text/javascript"> 
    window.onkeydown = function(e){ 
      console.log(e.keyCode + " alt: " + e.altKey); 
      e.preventDefault(); 
    }; 
    window.onkeyup = function(e){ 
      console.log(e.keyCode + " alt: " + e.altKey); 
      e.preventDefault(); 
    }; 
    </script> 
</body> 

maintenant, lorsque vous appuyez sur Alt + f le navigateur n'affiche « pop-up du fichier » comme d'habitude, et laissera des événements keydown et keyup obtenir s à vous, et pas seulement le clavier.

+0

Seule solution qui a fonctionné pour IE11. –

Questions connexes