Reiner Wirth: Verteilung von onclick Events

Hallo,

nachdem der Thread meiner Frage inzwischen im Archiv verschwunden ist, wage ich, diese nochmal zu stellen:

Ich möchte onclick-Events mit unterschiedlichen Funktionen bearbeiten, je nachdem, wo sie auftreten.

Im Moment habe ich

func1(){…}
document.onclick=func1;

und
func2(…){…} mit Aufruf aónclick aus <area … onclick="func2(…)"…>

Meine Idee ist:

function mclick(e) {....}
window.captureEvents (Event.CLICK);
window.onclick = mclick;

Funkion1 soll immer bei Klick auf das document ausgeführt werden, Funktion2 bei Klick auf Schaltflächen z.B.

<area id="01_1" title="Klick: abspielen | Doppelklick: anzeigen" onclick="func2('Bsp10', '100', '300', '../Sound1/10.html')" coords="664,300,738,332" alt=""
ondblclick="ieDblclick('Bsp10', '100', '300')" coords="664,300,738,332" alt="">

in mclick(e) brauche ich eine Bedingung für die "Herkunft" des Klicks, sodaß entschieden wird,
wenn Klick auch Schaltfläche --> func2 aufrufen,
wenn Klick irgendwo anders auf dem Document  --> func1 aufrufen.

Kann mir da geholfen werden?

Ohne diese "Verteilungsfunktion"  wird func1 beim Aufruf von func2 immer mit aufgerufen

Reiner

  1. hi,

    in mclick(e) brauche ich eine Bedingung für die "Herkunft" des Klicks, sodaß entschieden wird,
    wenn Klick auch Schaltfläche --> func2 aufrufen,
    wenn Klick irgendwo anders auf dem Document  --> func1 aufrufen.

    Kann mir da geholfen werden?

    http://www.quirksmode.org/js/contents.html#events setzt sich in mehreren Artikeln sehr detailiert mit der Thematik auseinander - welche Möglichkeiten/Eigenschaften es in welchem Browser (-Event-Modell) gibt, um das "Ziel" eines Events herauszubekommen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    Funkion1 soll immer bei Klick auf das document ausgeführt werden, Funktion2 bei Klick auf Schaltflächen

    Dann musst Du das Hochblubbern des Events zum document unterbinden. Klick in bestimmte Elemente muss also sowas aufrufen:

    function cancel_bubble (e) {
            if (e.stopPropagation) e.stopPropagation();
            else window.event.cancelBubble =  true;
        }

    <p onclick="cancel_bubble(event)">drückmich</p>

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Dann musst Du das Hochblubbern des Events zum document unterbinden. Klick in bestimmte Elemente muss also sowas aufrufen:

      function cancel_bubble (e) {
              if (e.stopPropagation) e.stopPropagation();
              else window.event.cancelBubble =  true;
          }

      <p onclick="cancel_bubble(event)">drückmich</p>

      Gruesse, Joachim

      Hallo,

      vielen Dank für diesen heißen Tipp, über den "Bubbling-Effekt" hatte ich zwar schon gehört, aber ihn auch anzuwenden, super, eine echte Hilfe.

      Reiner

      1. Dann musst Du das Hochblubbern des Events zum document unterbinden. Klick in bestimmte Elemente muss also sowas aufrufen:

        function cancel_bubble (e) {
                if (e.stopPropagation) e.stopPropagation();
                else window.event.cancelBubble =  true;
            }

        <p onclick="cancel_bubble(event)">drückmich</p>

        Gruesse, Joachim

        hier die auf diesen Tipp hin überraschend einfache Umsetzung für mein Beispiel

        meine Area-Codezeile sieht jetzt so aus und verhindert das bubbling zum document-event.

        <area title="Klick: abspielen | Doppelklick: anzeigen" onclick="clickTimer ('Bsp10', '100', '300', '../Sound1/10.html'); event.cancelBubble = true;" coords = "664,300,738,332" alt = ""
        ondblclick="ieDblclick('Bsp10', '100', '300')" coords = "664,300,738,332" alt = "">

        Eine wirklich tolle Sache

        nochmals vielen Dank dafür, dass es selfhtml gibt und man da so gut beraten wird.

        Reiner