9
votes

événement enkeyPress dans Firefox et IE8

J'ai le code JavaScript suivant. Ici, j'utilise onKeyPress = "Asscunction ()" code> dans la balise corporelle pour obtenir le code-clés code> de la touche enfoncée.

Le code fonctionne bien dans IE8 Mais c'est ne fonctionne pas dans Firefox. strong> P>

Veuillez donner une certaine solution à cela. P>

<!DOCTYPE html>
<html>
    <head>
    <title>Please help me out</title>
    <script type="text/javascript">
    function printDiv()
    {
      var divToPrint=document.getElementById('prnt');
      newWin=window.open(''+self.location,'PrintWin','left=50,top=20,width=590,height=840,toolbar=1,resizable=1,scrollbars=yes');
      newWin.document.write(divToPrint.outerHTML);
      newWin.print();
    }
    </script>

    <script type="text/javascript">
    function keypress(val)
    {
      //-----------------------------------------------------   
      //alert('nnnn');
      //alert(window.event ? event.keyCode : val.which);  
      //if(val.which != 0 && val.charCode != 0)
      // alert('Firefox'+String.fromCharCode(val.which));
      //else
      // alert('IE'); 
      //------------------------------------------------------- 
      var key=event.keyCode;
      if(key==112 || key==80 || val=="print")
        printDiv();
      else if(key==101 || key==69 || val=="exit")
        window.location="http://google.co.in";
      else if(key==114 || key==82 || val=="refresh")
        document.forms[0].reset();  
      else
        event.returnValue=true;
    }
    </script>
</head>
<body bgcolor="lightblue" topmargin="0" leftmargin="0"marginwidth="0px" marginheight="0px" onkeypress="keypress(null)">
<table align="left" border="1" cellpadding="5" cellspacing="0" style="width: 100%;height:100%">
<tbody>
<tr><td width="20%" valign="top">ccccccccccc</td>
    <td width="80%" align="center">
        <table style="width: 100%" border="0" valign="top">
        <tr align="right">
        <td valign="top">
        <button value="refresh" accesskey="R" onclick="keypress(this.value)">
            <b><u>R</u></b>efresh
        </button>
        <button value="print" accesskey="P" onclick="keypress(this.value)">
            &nbsp;&nbsp;<b><u>P</u></b>rint&nbsp;&nbsp;
        </button>
        <button value="exit" accesskey="E" onclick="keypress(this.value)">
            &nbsp;&nbsp;&nbsp;<b><u>E</u></b>xit&nbsp;&nbsp;&nbsp;
        </button>
        </td></tr>
        </table> 
        <h3>Press the letters P->Print , E->Exit etc....</h3>   
        <h1>Just a test for keypress event</h1>
        <form action="http://google.co.in" method="Post">
            <div id="prnt">
                zzzzzzzzzzzzzzz
            </div>
        </form>
    </td>
</tr>
</tbody>
</table></body></html>


2 commentaires

Pourriez-vous décrire exactement ce que vous essayez d'atteindre?


J'essaie d'attribuer une fonction (disons imprimer la page) à la touche "P" via l'événement OnKeyPress. J'utilise Windows XP, IE8, Firefox. Mon problème est le suivant: Dans Firefox, l'événement OnKeyPress ne renvoie aucun code clé que je dois appeler une fonction spécifique. Mais dans IE8, il fonctionne.


4 Réponses :



12
votes

Lorsque des problèmes comme celui-ci montrent, je commence à utiliser n'importe quel type de cadre JavaScript. Ces cadres sont construits pour éviter les problèmes de différents navigateurs.

attraper tous les différents keypress () code> API, comme le lien des spectacles Emmett, peut être très difficile. P>

Exemple: strong> p>

dans HTML Head: P>

$(document).keydown(function(event) {
 alert('You pressed '+event.keyCode);
 event.preventDefault();
});


3 commentaires

Quelqu'un peut-il me donner la solution de manière très simple ..? Je suis un nouvel apprenant .......


Il pourrait être plus utile d'apprendre en réalité comment les événements fonctionnent dans JavaScript que de courir aveuglément à une bibliothèque. C'est en fait très simple.


OnKeyPress Prendre la valeur précédente ne prenant pas de courant..solution pls



-1
votes

Je pense que Firefox ne sont pas des programmeurs de soins ... Et c'est la raison pour laquelle alors, Dans Firefox Navigator.appname retourne "Netscape". Donc, l'utilisateur peut éditer son code comme, xxx


0 commentaires

7
votes

Passez l'objet événement comme paramètre et votre code fonctionnera dans IE ainsi que Firefox. L'exemple de code est le suivant:

function keypress(event) {
  alert(event.keyCode);
  var key=event.keyCode;
  if(key==112 || key==80)
      printDiv();
  else if(key==101 || key==69)
      window.location="http://google.com";
  else if(key==114 || key==82)
      window.reset();  
}


0 commentaires