Verteilung von onclick Events
Reiner Wirth
- javascript
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
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
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
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
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