fr@gma: Eventhandler

Hallo,

Ich habe in einer dynamisch generierten Tabelle einen genierten Link (a). Kann ich diesem gar keine EventHandler (in diesem Fall onMouseOver) als Attribute übergeben?

var verweis = document.createAttribute("onMouseOver");
verweis.nodeValue = "SetbgColors('name','farbe')";
TD2link.setAttributeNode(verweis);

  1. Hallo fr@gma,

    Ich habe in einer dynamisch generierten Tabelle einen genierten Link (a). Kann ich diesem gar keine EventHandler (in diesem Fall onMouseOver) als Attribute übergeben?

    Du hast einen Link generiert, ich vermute so ähnlich:

    a = document.createElement("a");

    Dann schreib doch einfach:

    a.onmouseover = deineMouseoverFunktion;

    Da diese Vorgehensweise allerdings keine Übergabeparameter verträgt, definierst du deineMouseoverFunktion wie folgt:

    function deineMousoverFunktion() {
       eigentlicheMouseoverFunktion(this);
    }

    und

    function eigentlicheMouseoverFunktion(x){
      x.style.background = irgendeineFarbe;
    }

    Gruß Gernot

  2. Hallo,

    Ich habe in einer dynamisch generierten Tabelle einen genierten Link (a). Kann ich diesem gar keine EventHandler (in diesem Fall onMouseOver) als Attribute übergeben?

    Doch. Der Eventhandler heißt im JavaScript "onmouseover" und erwartet als Inhalt keinen String, sondern eine Funktion.

    http://forum.de.selfhtml.org/archiv/2004/1/69606/#m400581

    http://forum.de.selfhtml.org/archiv/2004/2/73260/#m421787

    viele Grüße

    Axel

    1. Doch. Der Eventhandler heißt im JavaScript "onmouseover"

      Nicht doch. In JavaScript gibt’s keine Eventhandler.

      Wohl aber in HTML. Dort stellen sie eine Verbindung zu Script-Sprachen – z.B. JavaScript – her. http://de.selfhtml.org/html/attribute/eventhandler.htm

      und erwartet als Inhalt keinen String, sondern eine Funktion.

      Für HTML ist der Wert eines Eventhandler-Attributs CDATA, also ein String. http://de.selfhtml.org/html/referenz/attribute.htm#universalattribute

      Dieser String sollte aber natürlich etwas Ausführbares  – z.B. JavaScript – beinhalten.

      Gunnar

      --
      "Nobody wins unless everybody wins." (Bruce Springsteen)
      1. Hallo,

        Nicht doch. In JavaScript gibt’s keine Eventhandler.

        Doch, sogar in DOM http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-registration.

        Für HTML ist der Wert eines Eventhandler-Attributs CDATA, also ein String.

        Für HTML schon. Der Parser übergibt den String dann dem JavaScript-Interpreter und der interpretiert ihn als Script.

        Es ging aber darum, wie man das Attribut "onmouseover" mit JavaScript so setzen kann, dass es alle modernen Browser als Eventhandler behandeln. Und für JavaScript ist der Inhalt des Attributes "onmouseover" _kein_ String.

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                "http://www.w3.org/TR/html4/strict.dtd">
        <html>
        <head>
        <title>Eventhandler in JavaScript</title>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
        </head>
        <body>
        <p id="myP" onMouseOver="this.style.backgroundColor='#00AEAD'">Test</p>
        <script type="text/javascript">
        <!--
        var p = document.getElementById("myP")
        p.onmouseout = function() {this.style.backgroundColor='#FFF';}

        document.write("onmouseover = Typ:" + typeof(p.onmouseover) + "; Inhalt:" + (p.onmouseover).toString() + "<br>");
        document.write("onmouseout = Typ:" + typeof(p.onmouseout) + "; Inhalt:" + (p.onmouseout).toString() + "<br>");
        //-->
        </script>
        </body>
        </html>

        viele Grüße

        Axel

        1. Nicht doch. In JavaScript gibt’s keine Eventhandler.
          Doch, sogar in DOM http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-registration.

          Axel,
          Auf der gesamten Seite taucht nicht einmal "JavaScript" auf.

          Die Eventhandler gehören nicht zu JavaScript, sondern noch zu HTML. Wenn das entsprechende Ereignis eintritt, wird ein Script aufgerufen. Das muss nicht JavaScript sein.

          Gunnar

          --
          "Nobody wins unless everybody wins." (Bruce Springsteen)
          1. Hallo,

            Die Eventhandler gehören nicht zu JavaScript, sondern noch zu HTML. Wenn das entsprechende Ereignis eintritt, wird ein Script aufgerufen. Das muss nicht JavaScript sein.

            Ja und? Was hat das mit dem zu lösenden Problem zu tun? Das Problem war: "Wie kann man mit JavaScript einen in Browsern funktionierenden Eventhandler für HTML-Elemente setzen?"

            Deine Antwort ist also: "Das geht nicht."

            Meine Antwort ist: "Das geht, wie von mir beschrieben."

            viele Grüße

            Axel

            1. Deine Antwort ist also: "Das geht nicht."

              Nein, ich hatte mich ehrlich gesagt nicht wirklich dem Problem zugewandt und dein »Der Eventhandler heißt im JavaScript "onmouseover"« falsch gedeutet.

              Sorry,
              Gunnar

              --
              "Nobody wins unless everybody wins." (Bruce Springsteen)
    2. Hallo,

      Der Eventhandler heißt im JavaScript "onmouseover" und erwartet als Inhalt keinen String, sondern eine Funktion.

      Einige Browser erlauben durchaus das Setzen von on*-Attributen als Attribute (nicht nur als Eigenschaften von Elementobjekten). Somit lässt sich unter Umständen ein Event-Handler als String notieren, siehe etwa </archiv/2004/6/82376/#m480771>.
      Das das Ganze sowieso nur pseudo-standardisiert ist, ist es im Prinzip genauso sinnig wie die klassische Methode mit einem Funktionsobjekt. Das angesprochene DOM Events arbeitet gar nicht mehr mit HTML-Attributen bzw. deren entsprechenden Objekteigenschaften, daher kommen dort nur noch Funktionsobjekte zum Einsatz.

      Mathias

      1. Hallo,

        Einige Browser erlauben durchaus das Setzen von on*-Attributen als Attribute (nicht nur als Eigenschaften von Elementobjekten). Somit lässt sich unter Umständen ein Event-Handler als String notieren, siehe etwa </archiv/2004/6/82376/#m480771>.

        Ja, das ist wohl davon abhängig, wie im Parser die Zusammenarbeit mit dem JavaScript-Interpreter programmiert ist. Es gibt da wohl zwei Ansätze:

        1. Wenn mit DHTML Attribute von HTML-Elementen geändert bzw. gesetzt werden, so werden diese vom Parser gehandhabt, wie Attribute, welche schon im HTML-Quelltext stehen. Auch Attribute mit %SCRIPT-Inhalt werden erst geparst und dann dem Script-Interpreter überlassen. - Gecko, Opera

        2. Wenn mit DHTML Attribute von HTML-Elementen geändert werden und es handelt sich um Attribute deren Inhalt als %SCRIPT interpretiert werden muss, so werden diese vom Parser ignoriert und direkt dem Script-Interpreter überlassen. - MSIE

        viele Grüße

        Axel

      2. Hallo.

        Das das Ganze sowieso nur pseudo-standardisiert ist, ist es im Prinzip genauso sinnig wie die klassische Methode mit einem Funktionsobjekt.

        Ernst gemeint: "Da" oder "Dass"?
        MfG, at