P.M.: Click Event im Code auslösen

Hallo

Ich habe auf einem Objekt ein "onclick" Attribut gesetzt welches eine Funktion mit verschiedenen Parametern aufruft.

Nun möchte ich diesen Click Event "künstlich" im Code auslösen und die Funktion nicht direkt aufrufen. Ist das möglich?

Gruss P.M.

  1. Ich habe auf einem Objekt ein "onclick" Attribut gesetzt welches eine Funktion mit verschiedenen Parametern aufruft.

    Nun möchte ich diesen Click Event "künstlich" im Code auslösen und die Funktion nicht direkt aufrufen. Ist das möglich?

    Ja.

    Aber nicht direkt.

    [obj].onclick = function()
    {
    deine_funktion(param1, param2);
    // hier ist übrigens this = [obj]
    }

    Struppi.

  2. Hallo,

    Nun möchte ich diesen Click Event "künstlich" im Code auslösen und die Funktion nicht direkt aufrufen. Ist das möglich?

    Dafuer gibt es die DOM-Methode dispatchEvent(). Sofern vom Browser unterstuetzt, erfolgt die Anwendung auf diese Weise:

    var obj=document.getElementById("bla");
    obj.dispatchEvent("click");

    Man kann auch den booleschen Rueckgabewert auswerten.

    Dieses Beispiel demonstriert die Methode im SVG-Kontext.

    MfG, Thomas

    1. Hallo,

      Nun möchte ich diesen Click Event "künstlich" im Code auslösen und die Funktion nicht direkt aufrufen. Ist das möglich?

      Dafuer gibt es die DOM-Methode dispatchEvent(). Sofern vom Browser unterstuetzt, erfolgt die Anwendung auf diese Weise:

      var obj=document.getElementById("bla");
      obj.dispatchEvent("click");

      Ich habe damit noch nicht gearbeitet, aber sagen die Specs nicht aus, dass dispatchEvent ein Event-Objekt erwartet und keinen String? Ich hätte es mit var evt = document.createEvent("MouseEvent");
      evt.initMouseEvent("click", ...andere Eventeigenschaften...); var success = obj.dispatchEvent(evt); versucht (ungetestet - ich meine vom Prinzip her).

      Mathias

      1. Tag molily.

        Ha, erwischt :)
        Ist schon gemein, dass nur Devs ihre Postings korrigieren können. Wozu habe ich bloß diesen ProAccount?

        Siechfred

        --
        »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
        1. hi,

          Ist schon gemein, dass nur Devs ihre Postings korrigieren können. Wozu habe ich bloß diesen ProAccount?

          ja, inzwischen denke ich auch darüber nach, die einzugsermächtigung für die monatsgebühr für meinen pro-account zu widerrufen.

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. Hallo,

        Ich habe damit noch nicht gearbeitet, aber sagen die Specs nicht aus, dass dispatchEvent ein Event-Objekt erwartet und keinen String?

        Ja durchaus und ich handhabe das im genannten SVG-Beispiel formal auch so, wobei allerdings das click-MouseEvent an die Funktion uebergeben wird und nicht neu erzeugt wird.

        Ich hätte es mit var evt = document.createEvent("MouseEvent");
        evt.initMouseEvent("click", ...andere Eventeigenschaften...); var success = obj.dispatchEvent(evt); versucht (ungetestet - ich meine vom Prinzip her).

        Ja, das passt schon besser.

        Beim Testen mit Mozilla habe ich das Beispiel aus der Gecko DOM Reference probiert, was offenbar fehlerhaft ist.

        Hier mal ein erfolgreicher Versuch mit Mozilla (getestet mit Firefox 1.0) mit Orientierung am DOM Level 2 Event Model:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>Test by TM 01/05</title>
        <script language="JavaScript" type="text/javascript">
        <!--

        function Init()
        {
          var obj=document.getElementById("test");
          if(document.createEvent && obj.dispatchEvent)
          {
            var evt=document.createEvent("MouseEvents");
            if(evt && evt.initMouseEvent)evt.initMouseEvent("click",true,true,document.defaultView,1,0,0,0,0,false,false,false,false,0,null);
            obj.dispatchEvent(evt);
          }
        }

        function Test()
        {
          alert("klappt");
        }

        //-->
        </script>
        </head>
        <body onload="Init()">
        <form action="">
        <input id="test" type="button" value="Test" onclick="Test()">
        </form>
        </body>
        </html>

        MfG, Thomas