Suivez les fils RSS
 

Des livres incontournables pour tout maîtriser

  • CSS avancées - vers HTML5 et CSS3
  • HTML5
  • CSS2
  • PHP5 avanc�
  • Memento MySQL
  • Memento CSS 3
  • Memento XHTML
  • WordPress 3 100% pratique
  • jQuery et jQuery UI
Auteur
Neum
#
Citer
38 Posts
Bonjour,

Le code javascript "onkeydown" directement placé dans la balise "body" permet de détecter la pression de certains touches au clavier pour en déclencher individuellement les actions dans les pages php à l'écran.

Mais très mauvaise surprise lors de tests multi-plateformes : si le code fonctionne parfaitement sur Chrome, Opéra et Safari (et à forciori sur IE aussi), il est totalement inopérant sur Firefox version 9 (et même 10) sur Mac OS X.


<body onkeydown="if (window.event.keyCode==86) {location.href='url1';} else if (window.event.keyCode==78) {location.href='url2';} else if (window.event.keyCode==27) { fonction1;} else if (window.event.keyCode==90) { fonction2;}">


Tout un WE sur la question en vain. Quelqu'un saurait-il pourquoi? Quelqu'un a-t-il déjà été en but à ce problème? Quelqu'un saurait-il comment le régler? Par avance Merci.
Modifié par Neum (13 Feb 2012 - 12:33)

Neum

^
Gothor
#
Citer
325 Posts
Bonjour,

Chez moi, en remplaçant window.event par event, cela fonctionne (sur FF 10, Chrome 16, Opéra 11 et IE9).
Ils ont l'air de développer un peu plus sur ce site, apparemment il faudrait prévoir les deux...

http://www.sitepoint.com/forums/showthread.php?330837-window.event-is-not-working-in-Firefox

Gothor

^
Neum
#
Citer
38 Posts
Bonjour Gothor,

et merci de venir participer.

Pour te répondre, j'avais mis avant le "event" seul. Même sanction : inopérant sur Firefox Mac. Au moins avec le window.event se rend-on accessible sur IE puisque le "window.event" a été fait pour lui.

Pour le reste - ton lien - il s'agit à chaque fois de créer des onKeyDown dans un input de formulaire. Ce n'est absolument pas mon cas ! Mes onkeydown dans ma balise body declenchent des liens href vers des pages annexes du site, ou des fonctions, comme par exemple, femer un lightbox via la touche "Esc".

Donc mon problème reste entier...
Modifié par Neum (13 Feb 2012 - 15:57)

Neum

^
Gothor
#
Citer
325 Posts
Peu importe là où tu appliques ton keydown, c'est le code qu'il exécute qui est important...

Tu pourrais faire quelque chose comme :
<html>
    <head>
        <script type="text/javascript">
        function maFonction(evt) {
          e = evt || window.event;
          switch (e.keyCode) {
              case 86 : uneFonction(); break;
              case 78 : uneAutreFonction(); break;
              ...
          }
        }
        </script>
    </head>
    <body onkeydown="maFonction(event)">
    </body>
</html>


En fait, selon le lien que je t'ai envoyé, Firefox ne connaît pas window.event.
Avec ce stratagème, tu envoies à ta fonction le événement potentiellement récupéré.
Si l'événement a pu être récupéré directement, il est stocké dans la variable e (var e = evt)
sinon, on va chercher l'événement dans window.event (var e = window.event).
Modifié par Gothor (13 Feb 2012 - 16:01)

Gothor

^
Julien Royer
#
Citer
Modérateur
4163 Posts
Bonjour,

Si tu es patient, tu peux toujours lire cet article : http://www.alsacreations.com/article/lire/578-La-gestion-des-evenements-en-JavaScript.html

God rest the souls of that poor family. And pussy’s half price for the next 15 minutes.

^
Neum
#
Citer
38 Posts
Gothor,

waouh génial... ça fonctionne!... Je ne sais pas quoi te dire d'autre sinon un tout bête "Merci", avec un "M" majuscule et même Mille Mercis.... Je sèche désespérément depuis tellement de temps sur ce problème que je n'arrive même pas à y croire...
J'avais essayé plein d'alternatives mais je n 'arrivais pas à synthétiser le e.evt || window.event, car je voyais bien que tout se joue sur cette sorte de "switch" pour tenir compte des uns et des autres. Le jour où ils sauront faire preuve de maturité et de respect envers nous, ils se mettront d'accord sur un et un seul standard...

Quoiqu'il en soit, je ne suis pas prêt d'oublier cette leçon à présent. Et pour répondre à "Julien" : je vais prendre le temps et oui, je vais lire "La gestion des évènements en Javascripts d'Alsacreation" : j'ai acheté le livre du site sur le HTML 5 (fabuleux d'ailleurs), alors je vais lire cet article.

Quoiqu'il en soit, et encore une fois, avec ma plus profonde et sincère gratitude : MERCI.
A une prochaine fois,
Neum
Modifié par Neum (13 Feb 2012 - 21:04)

Neum

^