Über target und currentTarget im Bubbling
Target befindet sich in der Zielphase des Ereignisflusses; currentTarget befindet sich in der Erfassungs-, Ziel- und Bubbling-Phase des Ereignisflusses. Nur wenn sich der Ereignisfluss in der Zielphase befindet, sind die beiden Richtungen gleich. Wenn er sich in der Erfassungs- und Bubbling-Phase befindet, zeigt target auf das angeklickte Objekt und currentTarget auf das übergeordnete Objekt des aktuellen Ereignisses.
<p id="outer" style="background:#099"> <p>我是目标p</p> ----点击这部分,输出:e.target.tagName : P || e.currentTarget.tagName : p <p id="inner" style="background:#9C0">我是目标p</p> ----点击这部分,输出:e.target.tagName : P || e.currentTarget.tagName : p <br> ----点击这部分,输出:e.target.tagName : p || e.currentTarget.tagName : p </p> //看下第二个变列: <p id="outer" style="background:#099"> <p>我是目标p</p> ----点击这部分,输出:e.target.tagName : p || e.currentTarget.tagName : p <p id="inner" style="background:#9C0">我是目标p</p> ----点击这部分,输出:e.target.tagName : P || e.currentTarget.tagName : p <br> ----点击这部分,输出:e.target.tagName : p || e.currentTarget.tagName : p </p>
function getObj(id) { return document.getElementById(id); } function addEvent(obj, event, fn) { if(window.attachEvent) { obj.attachEvent("on" + event, fn); } else if(window.addEventListener) { obj.addEventListener(event, fn, false); } } function test(e) { alert("e.target.tagName : " + e.target.tagName + "\n e.currentTarget.tagName : " + e.currentTarget.tagName); } var outer = getObj("outer"); var inner = getObj("inner"); //addEvent(inner, "click", test); addEvent(outer, "click", test);
Der Unterschied zwischen IE und DOM
IE
Ziel event.target event.srcElement abrufenZeichencode event.charCode event.keyCode abrufen
Standardverhalten verhindern event.prevetDefault() event.returnvalue=false
Bubbling Event.stopPropagation() event.cancelBubble=true
document.body.oncontextmenu=function(event) { if(isIE) { var oEvent=window.event; oEvent.returnValue=false; //也可以直接是return false;阻止默认行为 } else { oEvent.preventDefault(); } }
Mausereignis
<p>use your mouse to click and double click the red square</p> <p style="width:100px;height:100px;background:red" onmouseover="handleEvent(event)" onmouseout="handleEvent(event)" onmousedown="handleEvent(event)" onmouseup="handleEvent(event)" onclick="handleEvent(event)" ondblclick="handleEvent(event)" id="p1" > </p> <p><textarea id="txt1" rows="5" cols="45"></textarea></p> <!--检测键盘事件--> <p><input type="text" id="textbox" onkeydown="handle(event)" onkeypress="handle(event)" onkeyup="handle(event)" ></p> <p><textarea id="txt2" rows="10" cols="45"></textarea></p>
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Javascript-Bubbling-Ereignissen, Mausereignissen und Dom-Instanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!