Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung von Javascript-Bubbling-Ereignissen, Mausereignissen und Dom-Instanzen

Detaillierte Erläuterung von Javascript-Bubbling-Ereignissen, Mausereignissen und Dom-Instanzen

伊谢尔伦
伊谢尔伦Original
2017-07-22 15:46:571467Durchsuche

Ü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 abrufen
Zeichencode event.charCode event.keyCode abrufen
Standardverhalten verhindern event.prevetDefault() event.returnvalue=false
Bubbling Event.stopPropagation() event.cancelBubble=true

Informationen zum Blockieren des Standardverhaltens, wenn der Benutzer beispielsweise mit der rechten Maustaste klickt, können Sie die Blockierungsstandardeinstellung verwenden, wenn Sie nicht möchten, dass das Menü angezeigt wird Verhalten:


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>
js-Datei ist wie folgt folgt:


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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn