Kevin: .click() auf div

Hallo,

laut SelfHTML ist es ja nur für Klick-Buttons, Checkboxen, Felder für Datei-Upload, Abbrechen-Buttons und Absendebuttons möglich, per Javascript einen Klick daruf auszulösen (mit .click())

Jetzt möchte ich das ganze aber auf ein div machen, hab also einfach mal probiert:

document.getElementById('meinDiv').click();

Das funktioniert im IE auch wunderbar, Firefox macht's dagegen nicht, was vermutlich auch korrekt ist.

Hat jemand ne andere Idee, wie man das bewerkstelligen könnte?

So denn,

mfg. Kevin.

  1. Γειά σου, Kevin!

    laut SelfHTML ist es ja nur für Klick-Buttons, Checkboxen, Felder für Datei-Upload, Abbrechen-Buttons und Absendebuttons möglich, per Javascript einen Klick daruf auszulösen (mit .click())

    Ja, das ist möglich.

    Jetzt möchte ich das ganze aber auf ein div machen, hab also einfach mal probiert:

    document.getElementById('meinDiv').click();

    Das funktioniert im IE auch wunderbar, Firefox macht's dagegen nicht, was vermutlich auch korrekt ist.

    Ja, auch dieses Verhalten ist richtig, da click() als Funktion der document.all-Philosophie von Microsoft proprietär ist.

    Hat jemand ne andere Idee, wie man das bewerkstelligen könnte?

    Wenn du scriptgesteuert auf ein Element (hier: ein <div>) klicken möchtest, so tust du dies bestimmt mit der Intention, das onclick-Event dieses Elements auszulösen oder den Fokus von einem anderen Element zu entfernen. Warum aber so kompliziert? Rufe die gewünschte Funktion, die bei Klick auf das Element aufgerufen würde, doch direkt auf!

    Αντίο!
    Sven aus Bonn

    --
    Ἀεὶ πάντα ῥεῖ.
    Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
    1. Wenn du scriptgesteuert auf ein Element (hier: ein <div>) klicken möchtest, so tust du dies bestimmt mit der Intention, das onclick-Event dieses Elements auszulösen oder den Fokus von einem anderen Element zu entfernen. Warum aber so kompliziert? Rufe die gewünschte Funktion, die bei Klick auf das Element aufgerufen würde, doch direkt auf!

      Klar, das wär am einfachsten. Allerdings werden im OnClick-Feld mehrere Funktionen ausgeführt, die durch PHP serverseitig bestimmt werden. Noch dazu kommt, dass es sich bei mir um mehrere div's handelt, die potenziell unterschiedliche OnClick-Funkionen starten. Da erschien es mir am leichtesten, den Click zu simulieren, statt den Aufwand zu treiben, zunächst herauszubekommen, was eigentlich gestartet wird.

      Andere Idee, ich weiß, eval() ist böse. Aber das OnClick-Attribut müsste man ja auslesen können und dann per eval ausführen. Quick&dirty halt.

      So denn,

      mfg. Kevin.

      1. Andere Idee, ich weiß, eval() ist böse. Aber das OnClick-Attribut müsste man ja auslesen können und dann per eval ausführen. Quick&dirty halt.

        Grad mal ausprobiert, geht so nicht, da vom Browser um den Inhalt des onclick-Attributs noch eine Funktionen-Deklaration gestellt wird. Daher wird der Inhalt also wohl nicht ausgeführt.

        So denn,

        mfg. Kevin.

      2. Hallo,

        Andere Idee, ich weiß, eval() ist böse. Aber das OnClick-Attribut müsste man ja auslesen können und dann per eval ausführen. Quick&dirty halt.

        Warum so kompliziert? Das [HTMLDivElement].onclick ist für JavaScript eine Funktionsreferenz. Rufe diese doch einfach als Funktion auf:

        document.getElementById('meinDiv').onclick();

        viele Grüße

        Axel

        1. Warum so kompliziert? Das [HTMLDivElement].onclick ist für JavaScript eine Funktionsreferenz. Rufe diese doch einfach als Funktion auf:

          document.getElementById('meinDiv').onclick();

          Ah, danke, guter Tipp! Funzt astrein. Vielleicht sollte man das in SelfHTML einfließen lassen!?

          So denn,

          mfg. Kevin.

  2. Hallo,

    document.getElementById('meinDiv').click();

    Das funktioniert im IE auch wunderbar, Firefox macht's dagegen nicht, was vermutlich auch korrekt ist.

    Hat jemand ne andere Idee, wie man das bewerkstelligen könnte?

    Du kannst doch onclick nutzen bzw. abfragen, z.B.:

    <div id="test" onclick="alert(9)">test</div>
    <script language="javascript">
    tester=document.getElementById("test").onclick;
    tester();
    </script>

    Grüsse

    Cyx23