tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von CPoly
  • 1 Beitrag von CPoly
  • 1 Beitrag von CPoly
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
178
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    Hallo in die Runde,

    weiß jemand, wie man den keyCode 27 (Escape) beim Internet-Explorer einfängt?

    Firefox, Opera ist kein Problem, aber im IE muss der Anwender explizit einen Button betätigen, weil es mir nicht gelingt, dass die Escapetaste zieht.

    Habe mir schon diversen Rat geholt wie hier und hier, komme aber nicht weiter.

    Grüße
    Idi
     

  2. #2
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Code wäre ganz sinnvoll

    Im IE bekommst du kein Event Objekt übergeben, sondern musst auf window.event zugreifen. Und dann heißt es auch nicht keyCode sondern which.
    Netzwerkidi bedankt sich. 

  3. #3
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    Hai CPoly,

    habe mir schon so etwas gedacht.

    Allerdings sollte doch zumindest der Event ziehen, war mein Gedanke, schließlich ist er ja registiert - hoffe ich jedenfalls...

    Denn es kommt keine Fehlermeldung bei der Registrierung, noch eine beim Löschen, allerings wird auch der Event nicht ausgelöst.

    Muss ich den onkeypress-Event evtl. anders registrieren?

    Momentan mache ich das so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    function addEvent (node,evt,fnc) {
      if (node.addEventListener)
        node.addEventListener(evt,fnc,false);
      else if (node.attachEvent)
        node.attachEvent('on'+evt,fnc);
      else...
     
    addEvent (window, 'keypress', meineKeyPressFunction);

    Die Funktion "meineKeyPressFunction" wird nicht angelaufen.

    Löschen dann mit removeEvent.

    Grüße
    Idi
    Geändert von Netzwerkidi (04.10.11 um 12:10 Uhr)
     

  4. #4
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Nimm besser "document" anstatt "window". Außerdem ist "keypress" eher für Zeichen-Eingaben gedacht. Nimm also lieber "keydown" oder "keyup".

    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	
    	<title>Escape key</title>
    </head>
    
    <body>
    	<script type="text/javascript">
    	/* <![CDATA[ */
    	function meineKeyPressFunction(e) {
    		e = e || window.event;
    		
    		alert(e.keyCode || e.which);
    	}
    	
    	function addEvent (node, evt, fnc) {
    		if (node.addEventListener)
    			node.addEventListener(evt, fnc, false);
    		else if (node.attachEvent)
    			node.attachEvent('on' + evt, fnc);
    	}
    	
    	addEvent (document, 'keydown', meineKeyPressFunction);
    	/* ]]> */
    	</script>
    </body>
    
    </html>
    Netzwerkidi bedankt sich. 

  5. #5
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    Merci, CPoly. Aber bedeutet das, dass man die Escape im IE nicht nutzen kann? Das wäre wirklich dumm, weil die Escape-Taste die Taste schlechthin für den Abbruch von irgendetwas ist.

    Aber wo Du gerade da bist, ich habe noch eine weitere, wahrscheinlich nur klitzekleine Herausforderung für Dich.

    Wie schreibt man einen Callback?

    Ich will, dass in der folgenden Funktion erst dann die Meldung kommt, wenn der Loop endgültig fertig ist.


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    <html>
      <body>
      
      <h1 id="head1">Header 1</h1>
      
      <script type="text/javascript">
      function loop (obj,n) {
        obj.style.fontSize=n+"px";
        n++;
        if (n<50) {
          setTimeout(function () {loop(obj,n);},10);
        }
      }
      var o = document.getElementById('head1');
      loop(o,10);
      document.write('Fertigmeldung - zu früh******!');
      </script>  
     
      </body>
    </html>
     

  6. #6
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von Netzwerkidi Beitrag anzeigen
    Merci, CPoly. Aber bedeutet das, dass man die Escape im IE nicht nutzen kann?
    Doch, kannst du. Bei mir gibt der oben gezeigte Code in IE 6 und 8 "27" aus, wenn ich die ESC Taste drücke. Das wird ja in anderen JavaScript Projekten wie z.B. dem jQuery UI Dialog zum schließen benutzt. Also eigentlich sollte das kein Problem sein.


    Zitat Zitat von Netzwerkidi Beitrag anzeigen
    Ich will, dass in der folgenden Funktion erst dann die Meldung kommt, wenn der Loop endgültig fertig ist.
    Um callbacks zu verstehen, muss man wissen, dass Funktionen nichts anderes sind als Instanzen der Klasse "Function" (ja, man kann Funktionen auch mittels Konstruktor erzeugen). Deshalb kannst du die wie jedes andere Objekt einfach übergeben.

    HTML-Code:
    <html>
      <body>
      
      <h1 id="head1">Header 1</h1>
      
      <script type="text/javascript">
      function loop (obj, n, fn) {
        obj.style.fontSize=n+"px";
        n++;
        if (n<50) {
          setTimeout(function () {loop(obj,n,fn);},10);
        } else {
          fn();
        }
      }
      
      var o = document.getElementById('head1');
      
      loop(o, 10, function() {
        alert('Fertigmeldung - zu früh******!');
      });
      </script>  
     
      </body>
    </html>
    In dem Fall ist es eine Anonyme Funktion. Aber du kannst auch irgendwo im Code "function foo()" geklarieren und als Parameter nur noch "foo" übergeben (OHNE die Klammer hintendran! Dadurch würde sie ja ausgeführt).

    Übrigens solltest du kein "document.write" benutzen, sondern eher getElementById (und ähnliche) und innerHTML.
    Netzwerkidi bedankt sich. 

  7. #7
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    Ach, jetzt, wo ich den Esc-/KeyDown-Code von dir teste, merke ich erst, was du eigentlich gemeint hast.
    Für KeyDown einen Event registrieren, aber dann trotzdem Esc nutzen.
    Wobei, liebt wohl am Bezug: document statt window. Aber egal. Klappt nun so, wie ich das wollte.
    Hast mir definitiv den Tag gerettet, CPoly!
     

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 20.08.08, 22:56
  2. Hintergrund zieht im FF nicht mit
    Von kiesha im Forum CSS
    Antworten: 2
    Letzter Beitrag: 17.09.07, 10:50
  3. KeyCode-Script läuft nicht im FF
    Von juliusk im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 11.08.07, 14:26
  4. Antworten: 3
    Letzter Beitrag: 31.10.05, 11:31
  5. firefox + keycode in <input> = geht nicht
    Von bled im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 20.03.05, 13:36

Stichworte