Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 07.05.2007, 17:46
Dirk1 Dirk1 ist offline
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 06.05.2007
Ort: Hamburg
Beiträge: 6
Dirk1 befindet sich auf einem aufstrebenden Ast
Standard cancelBubble=true;

So, ich habs.
Es muß auf der inneren Ebene ein zusätzlicher event-handler eingerichtet werden. Dort kann über CancelBubble=true das weiterreichen zur nächsthöheren Ebene unterbunden werden, oder weitere Operationen durchgeführt werden.

Für alle dies interessiert hier ein kleines Testprogramm:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>stop bubbling</title>

<script language="JavaScript"> 

function onclickA(e)

{
	if (!e) var e = window.event //MSIE
        alert("Click innen");
        e.cancelBubble=true;
        e.stopPropagation();
        return true;
}

function onclickB(e)
{
        alert("Click aussen");
        return true;
}

function onloadH()
{
	ela = document.getElementById("a")
	elb = document.getElementById("b")
	if (ela.addEventListener) {
		ela.addEventListener("click", onclickA, false);
		elb.addEventListener("click", onclickB, false);
	}
	else if (ela.attachEvent){
		ela.attachEvent("onclick", onclickA);
		elb.attachEvent("onclick", onclickB);
	}
	return true;
}
</script>


</head>
<body onload="onloadH()">
	<div id="b" style="width:200px; height:200px; background:red">
		<div id="a" style="width:100px; height:100px; background:blue"></div>
	</div>


</body>
</html>
Noch ein paar Anmerkungen dazu.
Es muß unterschieden werden zwischen MSIE und dem Rest der Welt.
Bei MS heisst wird das event nicht über "e", sondern über "window.event" referenziert.
Deshalb die erste Zeile in den Funktionen, die das event abarbeiten sollen.

Weiterhin heisst es bei MS "attachEvent" statt "addEventListener".
Bei letzterem gibt es einen zusätzlichen dritten Parameter, mit dem bestimmt werden kann, ob Ereignisse von aussen oder von innen abgearbeitet werden soll.
Der hier vorgestellten Intention nach soll es von innen nach aussen gehen. Deshalb der dritte Parameter auf "false".

Bei Microsoft hingegen geht es immer von innen nach aussen.

Dirk
Mit Zitat antworten