Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Diskussion über die Stornierung von Javascript-Ereignissen und die Verhinderung von Blasenbildung

Eine kurze Diskussion über die Stornierung von Javascript-Ereignissen und die Verhinderung von Blasenbildung

PHPz
PHPzOriginal
2016-05-16 15:57:491394Durchsuche

Brechen Sie den Standardvorgang ab

Die w3c-Methode ist e.preventDefault(), IE verwendet e.returnValue = false;

Zur Unterstützung von addEventListener() In Im Browser können Sie den Standardvorgang der Zeit auch abbrechen, indem Sie die Methode „preventDefault()“ des Zeitobjekts aufrufen. In IE vor IE9 kann jedoch derselbe Effekt erzielt werden, indem die returnValue-Eigenschaft des Ereignisobjekts auf false gesetzt wird. Der folgende Code setzt einen Event-Handler voraus, der alle drei Abbruchtechniken verwendet:

function cancelHandler(event){
  var event = event || window.event;  //用于IE
  if(event.preventDefault) event.preventDefault();  //标准技术
  if(event.returnValue) event.returnValue = false;  //IE
  return false;   //用于处理使用对象属性注册的处理程序
}

Der aktuelle Entwurf des DOM-Ereignismodells definiert die Event-Objekteigenschaft defaultPrevented.

false zurückgeben

Die Rückgabe von false durch Javascript verhindert nur das Standardverhalten, aber die Verwendung von jQuery verhindert sowohl das Standardverhalten als auch das Sprudeln des Objekts.

Der Code lautet wie folgt:

var a = document.getElementById("testB");
  a.onclick = function(){
  return false;
};

Um Blasenbildung zu verhindern

w3cs Methode ist e. stopPropagation( ), IE verwendet e.cancelBubble = true

In Browsern, die addEventListener() unterstützen, können Sie eine stopPropagation()-Methode des Ereignisobjekts aufrufen, um zu verhindern, dass sich das Ereignis weiter ausbreitet. Wenn andere Handler für dasselbe Objekt definiert sind, werden die verbleibenden Handler weiterhin aufgerufen, der Aufruf der Methode stopPropagation() kann jedoch jederzeit während der Ereignisweitergabe aufgerufen werden. Sie kann in der Erfassungsphase, im Ereignisziel selbst und in anderen Fällen ausgeführt werden Risikoblasenstadium.

IE vor IE9 unterstützt die stopPropagation()-Methode nicht. Im Gegensatz dazu verfügt das IE-Ereignisobjekt über eine cancleBubble-Eigenschaft. Wenn diese Eigenschaft auf „true“ gesetzt wird, wird verhindert, dass sich das Ereignis weiter ausbreitet. (IE8 und frühere Versionen unterstützen die Erfassungsphase der Ereignisweitergabe nicht, daher ist Bubbling die einzige Ereignisweitergabe, die abgebrochen wird.)

Der aktuelle Entwurf der DOM-Ereignisspezifikation definiert eine weitere Methode für das Event-Objekt mit dem Namen stopImmediatePropagation ( ). Wie stopPropagation() verhindert diese Methode die Ereignisweitergabe von anderen Objekten, verhindert aber auch, dass alle anderen für dasselbe Objekt registrierten Ereignishandler aufgerufen werden.

Der Code lautet wie folgt:
function stopHandler(event)
    window.event?window.event.cancelBubble=true:event.stopPropagation();
}

Das Obige ist der gesamte Inhalt dieses Artikels, I Ich hoffe, es gefällt euch.

Weitere verwandte Tutorials finden Sie unter JavaScript-Video-Tutorial

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

In Verbindung stehende Artikel

Mehr sehen