Erklärbär: Shift + Pfeiltaste abfangen

Moin! Ich kann in einer Seite mit folgendem Skript navigieren:
<script for=document event="onkeydown()" language="jscript">
if (window.event.keyCode == 37) ...;
if (window.event.keyCode == 38) ...;
if (window.event.keyCode == 39) ...;
if (window.event.keyCode == 40) ...;
</script>
Das sind die Pfeiltasten nach links, oben, rechts und unten. Aber wie stelle ich es an, dass die Tastenkombination Shift und Pfeiltaste erkannt wird?

  1. Das sind die Pfeiltasten nach links, oben, rechts und unten. Aber wie stelle ich es an, dass die Tastenkombination Shift und Pfeiltaste erkannt wird?

    Kann man die Shift-Taste alleine per JavaScript erkennen?

    Wenn ja, könntest Du eine Zustandsvariable, z. B.
    namens "shiftPressed" definieren. In obiger Routine stünde
    dann

    <script for=document event="onkeydown()" language="jscript">
    if(window.event.keyCode == CODE_FUER_SHIFT) shiftPressed = true;
    ...
    ...
    if(windows.event.keyCode == 37)
      if(shiftPressed) {
        // Code fuer shift + Pfeiltaste
      } else {
        // Code fuer Pfeiltaste alleine
      }
    </script>

    Zusätzlich bräuchtest Du noch eine weitere Funktion

    <script for=document event="onkeyup()" language="jscript">
    if(window.event.keyCode == CODE_FUER_SHIFT) shiftPressed = false;
    </script>

    Das ganze ist nur eine mögliche Idee und ist nicht getestet!

    Viele Grüße

    Andreas

    1. Das sind die Pfeiltasten nach links, oben, rechts und unten. Aber wie stelle ich es an, dass die Tastenkombination Shift und Pfeiltaste erkannt wird?

      Kann man die Shift-Taste alleine per JavaScript erkennen?

      Wenn ja, könntest Du eine Zustandsvariable, z. B.
      namens "shiftPressed" definieren. In obiger Routine stünde
      dann

      <script for=document event="onkeydown()" language="jscript">
      if(window.event.keyCode == CODE_FUER_SHIFT) shiftPressed = true;
      ...
      ...
      if(windows.event.keyCode == 37)
        if(shiftPressed) {
          // Code fuer shift + Pfeiltaste
        } else {
          // Code fuer Pfeiltaste alleine
        }
      </script>

      Zusätzlich bräuchtest Du noch eine weitere Funktion

      <script for=document event="onkeyup()" language="jscript">
      if(window.event.keyCode == CODE_FUER_SHIFT) shiftPressed = false;
      </script>

      Das ganze ist nur eine mögliche Idee und ist nicht getestet!

      Viele Grüße

      Andreas

      Das funktioniert tatsächlich! THX! =) Onkeyup() kannte ich noch gar nicht. Für alle, die es noch interessiert, die komplette Lösung:

      <script for=document event="onkeydown()" language="jscript">
      if (window.event.keyCode == 16) shiftdown = true;

      if ((window.event.keyCode == 37) && (shiftdown == false)) goback();
      if ((window.event.keyCode == 39) && (shiftdown == false)) goforward();
      ...

      if ((window.event.keyCode == 37) && (shiftdown == true)) jumpback();
      if ((window.event.keyCode == 39) && (shiftdown == true)) jumpforward();
      ...
      </script>

      <script for=document event="onkeyup()" language="jscript">
      if (window.event.keyCode == 16) shiftdown = false;
      </script>

      <script language="javascript" type="text/javascript">
      <!--
      var shiftdown = false;
      //-->
      </script>