Ernesto: Event und Eventhandler

Hallo,

ich habe eine Überwachung für einen spez. Keycode installiert mit:
     document.onkeypress = getNewKeyCode;
In der folgenden Funktion wird ein Schlüssel keyZoom bestimmt:

function getNewKeyCode(keyEvent)
 {
  if (!keyEvent) { keyEvent = window.event; }
  if (navigator.appName == "Microsoft Internet Explorer")
  {
   if (keyEvent.keyCode == 122) { keyZoom = true; }
   else { keyZoom = false; }
  }
  else
  {   if (navigator.appName == "Netscape")
      {
        if (keyEvent.which == 122) { keyZoom = true; }
        else { keyZoom = false; }
      }
      else
      {
        alert("Browser wird hier nicht berücksichtigt.");
        keyZoom = false;
      }
  }
 }

Abhängig vcn keyZoom wird dann später, wenn noch auf ein bestimmtes
Bild geklickt wird,  verzweigt. Das klappt auch genau einmal. Wenn
ich ein zweites Mal die Taste Z klicke, kommt der Programm-Ablauf gar nicht mehr in die obige Funktion.
Woran kann das liegen? Muß ich da etwas zurücksetzen oder neu anstoßen?

Vielen Dank im Voraus
   Ernesto

  1. Hallo,
    ich glaube zu wissen, woran es liegt, daß nach einmal funktionieren,
    die weitere Überwachung nicht meht klappt:
    In der Zoom-Funktion wird ein weitere Key-Überwachung gestartet.

    Kann man nach der Zoom-Funktion die alte Key-Überwachung wieder aktiv
    machen?
    Indem man den Key-Überwacher noch mal aufruft???   Mit:

    document.onkeypress = getNewKeyCode;

    Vielen Dank im Voraus
        Ernesto

    1. In der Zoom-Funktion wird ein weitere Key-Überwachung gestartet.

      https://forum.selfhtml.org/?t=178746&m=1178971

      Mathias

  2. function getNewKeyCode(keyEvent)
    {
      if (!keyEvent) { keyEvent = window.event; }

    Beim Zugriff auf das Event-Objekt benutzt du eine sinnvolle Objektabfrage, wieso bleibst du nicht bei dem Schema und führt eine »Browserweiche« ein?

    if (navigator.appName == "Microsoft Internet Explorer")
      {
       if (keyEvent.keyCode == 122

    else
      {   if (navigator.appName == "Netscape")
          {
            if (keyEvent.which == 122) { keyZoom = true; }

    Diese »Browsererkennung« ist unnütz. Es gibt nicht nur diese beiden Browser und der Rückschluss über navigator.appName ist unzuverlässig. Wie du selbst siehst, geht es um die Eigenschaften keycode und which. Also fragst du ab, welche davon gesetzt ist und verwendest die gesetzte.

    if (keyEvent.which) {
      var key = keyEvent.which;
    } else if (keyEvent.keyCode) {
      var key = keyEvent.keyCode;
    }

    Oder kürzer:

    var key = keyEvent.which || keyEvent.keyCode;

    Danach einfach:

    keyZoom = (key == 122) ? true : false;

    http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder
    https://redaktion.selfhtml.org/selfhtml-preview/javascript/browser.html

    Mathias

    1. Hi,

      keyZoom = (key == 122) ? true : false;

      Noch kürzer:
      keyZoom = (key == 122);

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.