Heim Web-Frontend js-Tutorial Zusammenfassung der Javascript-Kenntnisse des js-Ereignisüberwachungsmechanismus (Ereigniserfassung).

Zusammenfassung der Javascript-Kenntnisse des js-Ereignisüberwachungsmechanismus (Ereigniserfassung).

May 16, 2016 pm 04:40 PM
Ereigniserfassung 事件监听

Im Prozess der Front-End-Entwicklung stoßen wir häufig auf das Problem, Ereignisse zu Seitenelementen hinzuzufügen. Es gibt viele js-Methoden zum Hinzufügen von Ereignissen. Einige werden direkt zur Seitenstruktur hinzugefügt, andere verwenden einige js-Ereignisüberwachungsmethoden Aufgrund verschiedener Browser-Server gibt es unterschiedliche Mechanismen für die Ereignis-Bubbling und die Ereignisüberwachung. Der LE-Browser verfügt nur über einen Ereignis-Bubbling-Mechanismus und keinen Ereignisüberwachungsmechanismus. Das größte Problem ist:

1. Ereignismethoden direkt in die Seitenstruktur schreiben

function eventfun(){ 
//console.log(this); 
} 
<input type="button" onclick="eventfun()" value="button" />//这里涉及到一个this作用域的问题,eventfun再这里是一个全局函数, 对象是[object Window],this指向的是window.
Nach dem Login kopieren

Um das Problem dieses Bereichs zu lösen, können Sie die Methode des Hinzufügens von Ereignisvariablen zur globalen Funktion verwenden und dieses Objekt als Parameter an die Funktion innerhalb der Seitenstruktur übergeben

<input type="button" onclick="eventfun2(this)" value="button2" /> 
function eventfun2(eve){//在这里把事件对象作为参数传递到全局方法里 
eve.name="alex"; 
window.name="robin"; 
console.log(this);//[object Window] 
console.log(eve);// [object HTMLInputElement] 
console.log(this.name);// robin 
console.log(eve.name);// alexvar 
self=eve; 
console.log(this.name);//robin 
console.log(self.name);//alex 
alert(window.name); 
alert(self.name); 
}
Nach dem Login kopieren

2. Die Verwendung der Methode zum Zuweisen von Werten zu Ereignisattributen ist eine Methode zum Binden von Ereignissen. Die Einschränkung dieser Methode besteht jedoch darin, dass nur eine Methode an das Ereignis gebunden werden kann Vorbehaltlich

wird die Methode verwendet

HTMLElementobject.onclick = fucntion(){//Bei Verwendung dieser Methode zum Zuweisen von Werten zu Ereignisattributen zeigt der Zeiger auf das Fensterobjekt und nicht auf das Ereignisobjekt, sodass diese Methode eine Referenz ist

//js code 
fun1(); 
fun2(); 
fun3(); 
console.log(this);//window.object 
} 
function dosomething(){ 
//js code 
} 
HTMLElementobject.onclick = dosomething;//使用这种为事件对象属性赋值的形式,this指针指向事件执行对象 
console.log(this);//htmlElementObject
Nach dem Login kopieren

3. Ereignisausbreitung – Sprudeln und Einfangen
Der DOM-Ereignisstandard definiert zwei Ereignisflüsse, die sich erheblich unterscheiden und erhebliche Auswirkungen auf Ihre Anwendung haben können. Die beiden Ereignisströme erfassen und sprudeln. Wie viele Webtechnologien haben Netscape und Microsoft sie jeweils unterschiedlich implementiert, bevor sie zu Standards wurden. Netscape entschied sich für die Implementierung des Capture-Ereignisstroms und Microsoft implementierte den Bubbling-Ereignisstrom. Glücklicherweise hat sich das W3C für eine Kombination dieser beiden Methoden entschieden, und die meisten neuen Browser folgen beiden Event-Streaming-Methoden.
Standardmäßig verwenden Ereignisse den sprudelnden Ereignisstrom und nicht den erfassenden Ereignisstrom. In Firefox und Safari können Sie jedoch explizit angeben, dass der Capture-Ereignisstrom verwendet werden soll, indem Sie beim Registrieren des Ereignisses den Parameter „useCapture“ übergeben und diesen Parameter auf „true“ setzen.
Sprudelnder Event-Stream
Wenn ein Ereignis für ein bestimmtes DOM-Element ausgelöst wird, beispielsweise wenn der Benutzer mit der Maus auf den Knoten „Kundenname“ klickt, folgt das Ereignis den übergeordneten Knoten, von denen der Knoten erbt, und durchläuft die gesamte DOM-Knotenhierarchie, bis es auf den Knoten trifft, von dem der Knoten erbt Der Knoten des Ereignistyp-Handlers ist zu diesem Zeitpunkt ein Onclick-Ereignis. Das Ereignis-Bubbling kann jederzeit während des Bubbling-Vorgangs beendet werden. In Browsern, die dem W3C-Standard entsprechen, können Sie die stopPropagation()-Methode für das Ereignisobjekt aufrufen. In Internet Explorer können Sie die Eigenschaft cancelBubble des Ereignisobjekts festlegen WAHR. . Wenn Sie die Ausbreitung des Ereignisses nicht stoppen, sprudelt das Ereignis weiter durch das DOM, bis es das Dokumentstammverzeichnis erreicht.
Erfassen Sie den Ereignisstrom
Die Ereignisverarbeitung beginnt an der Wurzel der DOM-Hierarchie und nicht am Zielelement, das das Ereignis ausgelöst hat. Das Ereignis wird der Reihe nach von allen Vorgängerelementen des Zielelements weitergegeben. In diesem Prozess wird das Ereignis von jedem geerbten Element vom Dokumentstamm bis zum Ereigniszielelement erfasst. Wenn der Ereignis-Listener das useCapture-Attribut bei der Registrierung auf true setzt, können sie in diesem Zeitraum an jedes Element gesendet werden. Element zum Behandeln des Ereignisses; andernfalls wird das Ereignis an das nächste Element auf dem Pfad zum abgeleiteten Element bis zum Zielelement übergeben. Nachdem das Ereignis das Zielelement erreicht hat, strömt es durch die DOM-Knoten.
Moderne Event-Bindungsmethoden
Wie in der vorherigen Lektion erläutert, weist die Verwendung der herkömmlichen Ereignisbindung viele Nachteile auf, beispielsweise die Unfähigkeit, mehrere Ereignishandler für dasselbe Ereignis auf einem Objekt zu registrieren. Browser und das W3C haben dies nicht berücksichtigt und verfügen daher in modernen Browsern über eigene Methoden zum Binden von Ereignissen.
W3C DOM
obj.addEventListener(evtype,fn,useCapture) – Vom W3C bereitgestellte Methode zum Hinzufügen einer Ereignisbehandlungsfunktion. obj ist das Objekt zum Hinzufügen des Ereignisses, evtype ist der Ereignistyp ohne on-Präfix, fn ist die Ereignisverarbeitungsfunktion. Wenn useCapture wahr ist, wird die Ereignisverarbeitungsfunktion in der Erfassungsphase ausgeführt, andernfalls wird sie in der Bubbling-Phase < ausgeführt 🎜> obj.removeEventListener(evtype,fn,useCapture) – Vom W3C bereitgestellte Methode zum Löschen der Event-Handler-Funktion
Microsoft IE-Methode
obj.attachEvent(evtype,fn) – Die vom IE bereitgestellte Methode zum Hinzufügen einer Ereignisverarbeitungsfunktion. obj ist das Objekt zum Hinzufügen des Ereignisses, evtype ist der Ereignistyp mit dem Präfix on, fn ist die Ereignisverarbeitungsfunktion, IE unterstützt keine Ereigniserfassung
obj.detachEvent(evtype,fn,) – Die vom IE bereitgestellte Methode zum Löschen von Ereignisverarbeitungsfunktionen evtype enthält das on-Präfix

Methoden zur Integration der beiden

function addEvent(obj,evtype,fn,useCapture) { 
if (obj.addEventListener) { 
obj.addEventListener(evtype,fn,useCapture); 
} else { 
obj.attachEvent("on"+evtype,fn);//IE不支持事件捕获 
} else { 
obj["on"+evtype]=fn;//事实上这种情况不会存在 
} 
} 
function delEvent(obj,evtype,fn,useCapture) { 
if (obj.removeEventListener) { 
obj.removeEventListener(evtype,fn,useCapture); 
} else { 
obj.detachEvent("on"+evtype,fn); 
} else { 
obj["on"+evtype]=null; 
} 
}
Nach dem Login kopieren
Es liegt ein Problem mit der Attach-Methode des IE vor. Bei Verwendung von attachmentEvent verweist dies innerhalb der Ereignisverarbeitungsfunktion auf window, nicht auf obj! Dafür gibt es natürlich eine Lösung!

Aber die attachmentEvent-Methode des IE hat ein anderes Problem. Dieselbe Funktion kann mehrmals für dasselbe Objekt und dasselbe Ereignis registriert werden. Die Lösung: Verlassen Sie die attachmentEvent-Methode des IE. Die attachmentEvent-Methode unter IE unterstützt keine Erfassung und unterscheidet sich nicht wesentlich von der herkömmlichen Ereignisregistrierung (außer dass sie mehrere Ereignisverarbeitungsfunktionen binden kann), und die attachmentEvent-Methode von IE weist ein Speicherverlustproblem auf!

addEvent,delEvent moderne Version

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>js事件监听</title> 
<style> 
table td{font:12px; border-bottom:1px solid #efefef;} 
</style> 
</head> 

<body> 
<div id="outEle" style="padding:10px; border:1px solid #b2b2b2; background:#efefef;"> 
<input type="button" onclick="eventfun()" id="button" value="button" /><br /> 
<input type="button" onclick="eventfun2(this);" id="button2" value="button2" /><br /> 
<input type="button" id="button3" value="button3" /><br /> 
<input type="button" id="button4" value="button4" /><br /> 
<table id="htmlEleTable" width="100%" border="0" style="border:1px solid #b2b2b2; background:#fff;"> 
<tr id="1111"><td>111111111111111111111111111111</td></tr> 
<tr id="22222"><td>222222222222222222222222222222</td></tr> 
<tr id="33333"><td>333333333333333333333333333333</td></tr> 
<tr id="4444"><td>444444444444444444444444444444</td></tr> 
<tr id="55555"><td>555555555555555555555555555555</td></tr> 
</table> 
</div> 
<script language="javascript" type="text/javascript"> 
function eventfun(){//1.直接把js方法写在页面结构上 
console.log(this);//这里涉及到一个this作用域的问题,eventfun再这里是一个全局函数, 对象是window,this指向的是window 
alert(this); 
} 
function eventfun2(eve){//在这里把事件对象作为参数传递到全局方法里 
eve.name="alex";// 
window.name="robin"; 
console.log(this);//[object Window] 
console.log(eve);// [object HTMLInputElement] 
console.log(this.name);// robin 
console.log(eve.name);// alex 
var self=eve; 
console.log(this.name);//robin 
console.log(self.name);//alex 
alert(window.name); 
alert(self.name); 
} 
function eventfun3(){//1.直接把js方法写在页面结构上 
console.log(this);//这里涉及到一个this作用域的问题,eventfun再这里是一个全局函数, 对象是window,this指向的是window 
console.log(this.id); 
alert(this); 
alert(this.id); 
//var outEleObj = EventUtil.$("outEle"); 
//removeEvent(outEleObj,"click",eventfun3); 
} 
/* 
var EventUtil = {}; 
EventUtil.$ = function(id){ 
return document.getElementById(id); 
} 
EventUtil.openmes = eventfun3; 
EventUtil.addEventHandle = function(eventTarget,eventtype,eventHandle){//定义事件监听的对象元素,事件类型,事件函数 
if(eventTarget.attachEvent){ 
eventTarget.attachEvent("on"+eventtype,eventHandle); 
}else if(eventTarget.addEventListener){ 
eventTarget.addEventListener(eventtype,eventHandle,false) 
}else{ 
eventTarget["on" + eventtype] = null; 
} 

}; 
EventUtil.deleEventHandle = function(eventTarget,eventtype,eventHandle){//定义事件监听的对象元素,事件类型,事件函数 
if(eventTarget.detachEvent){ 
alert("on"+eventtype); 
alert("on"+eventHandle); 
eventTarget.detachEvent("on"+eventtype,eventHandle); 
}else if(eventTarget.removeEventListener){ 
eventTarget.removeEventListener(eventtype,eventHandle,false) 
}else{ 
eventTarget["on" + eventtype] = null; 
} 

};*/ 
var EventUtil={ 
$:function(id){ 
return document.getElementById(id); 
}, 
but4fun:function(){ 
console.log(this); 
this.addEventHandle(); 
}, 
eventfun3:function (){ 
console.log(this); 
alert(this); 
delEvent(obj,evtype,fn,useCapture); 
} 
} 
/***使用addEventListener,attachEvent进行dom事件的监听 
function addEvent(obj,evtype,fn,useCapture){ 
if (obj.addEventListener) { 
obj.addEventListener(evtype,fn,useCapture); 
}else if(obj.attachEvent){ 
obj.attachEvent("on"+evtype,function () { 
fn.call(obj); 
}); 
}else { 
obj["on"+evtype]=fn;//事实上这种情况不会存在 
} 
} 
function delEvent(obj,evtype,fn,useCapture) { 
if (obj.removeEventListener) { 
obj.removeEventListener(evtype,fn,useCapture); 
} else if(obj.detachEvent){ 
obj.detachEvent("on"+evtype,fn); 
} else { 
obj["on"+evtype]=null; 
} 
} 



function addEvent(obj,evtype,fn,useCapture) { 
if (obj.addEventListener) {//优先考虑W3C事件注册方案 
obj.addEventListener(evtype,fn,!!useCapture); 
} else {//当不支持addEventListener时(IE),由于IE同时也不支持捕获,所以不如使用传统事件绑定 
if (!fn.__EventID) {fn.__EventID = addEvent.__EventHandlesCounter++;} 
//为每个事件处理函数分配一个唯一的ID 

if (!obj.__EventHandles) {obj.__EventHandles={};} 
//__EventHandles属性用来保存所有事件处理函数的引用 

//按事件类型分类 
if (!obj.__EventHandles[evtype]) {//第一次注册某事件时 
obj.__EventHandles[evtype]={}; 
if (obj["on"+evtype]) {//以前曾用传统方式注册过事件处理函数 
(obj.__EventHandles[evtype][0]=obj["on"+evtype]).__EventID=0;//添加到预留的0位 
//并且给原来的事件处理函数增加一个ID 
} 
obj["on"+evtype]=addEvent.execEventHandles; 
//当事件发生时,execEventHandles遍历表obj.__EventHandles[evtype]并执行其中的函数 
} 
} 
} 

addEvent.__EventHandlesCounter=1;//计数器,0位预留它用 
addEvent.execEventHandles = function (evt) {//遍历所有的事件处理函数并执行 
if (!this.__EventHandles) {return true;} 
evt = evt || window.event; 
var fns = this.__EventHandles[evt.type]; 
for (var i in fns) { 
fns[i].call(this); 
} 
}; 
/* 
function delEvent(obj,evtype,fn,useCapture) { 
if (obj.removeEventListener) {//先使用W3C的方法移除事件处理函数 
obj.removeEventListener(evtype,fn,!!useCapture); 
} else { 
if (obj.__EventHandles) { 
var fns = obj.__EventHandles[evtype]; 
if (fns) {delete fns[fn.__EventID];} 
} 
} 
} 

function fixEvent(evt) {//fixEvent函数不是单独执行的,它必须有一个事件对象参数,而且只有事件发生时它才被执行!最好的方法是把它整合到addEvent函数的execEventHandles里面 
if (!evt.target) { 
evt.target = evt.srcElement; 
evt.preventDefault = fixEvent.preventDefault; 
evt.stopPropagation = fixEvent.stopPropagation; 
if (evt.type == "mouseover") { 
evt.relatedTarget = evt.fromElement; 
} else if (evt.type =="mouseout") { 
evt.relatedTarget = evt.toElement; 
} 
evt.charCode = (evt.type=="keypress")&#63;evt.keyCode:0; 
evt.eventPhase = 2;//IE仅工作在冒泡阶段 
evt.timeStamp = (new Date()).getTime();//仅将其设为当前时间 
} 
return evt; 
} 
fixEvent.preventDefault =function () { 
this.returnValue = false;//这里的this指向了某个事件对象,而不是fixEvent 
}; 
fixEvent.stopPropagation =function () { 
this.cancelBubble = true; 
};*/ 
//console.log(EventUtil.$("button3"));//返回EventUtil函数的对象属性 
//EventUtil.$("button3").onclick= eventfun;//2.使用为对象事件属性赋值的方法来实现事件的监听 
//EventUtil.$("button3").onclick= eventfun2;//为事件属性添加多个方法时,为后者 
//EventUtil.$("button3").onclick= eventfun;//事件捕获是从事件对象逐层外父级检察一直到window对象 
var EventUtil =function(){ 
function getByid(id){ 
return document.getElementById(id); 
}; 
// written by Dean Edwards, 2005 
// with input from Tino Zijdel, Matthias Miller, Diego Perini 

// http://dean.edwards.name/weblog/2005/10/add-event/ 

function addEvent(element, type, handler) { 
if (element.addEventListener) { 
element.addEventListener(type, handler, false); 
} else { 
// assign each event handler a unique ID 
if (!handler.$$guid) handler.$$guid = addEvent.guid++; 
// create a hash table of event types for the element 
if (!element.events) element.events = {}; 
// create a hash table of event handlers for each element/event pair 
var handlers = element.events[type]; 
if (!handlers) { 
handlers = element.events[type] = {}; 
// store the existing event handler (if there is one) 
if (element["on" + type]) { 
handlers[0] = element["on" + type]; 
} 
} 
// store the event handler in the hash table 
handlers[handler.$$guid] = handler; 
// assign a global event handler to do all the work 
element["on" + type] = handleEvent; 
} 
}; 
// a counter used to create unique IDs 
addEvent.guid = 1; 

function removeEvent(element, type, handler) { 
if (element.removeEventListener) { 
element.removeEventListener(type, handler, false); 
} else { 
// delete the event handler from the hash table 
if (element.events && element.events[type]) { 
delete element.events[type][handler.$$guid]; 
} 
} 
}; 

function handleEvent(event) { 
var returnValue = true; 
// grab the event object (IE uses a global event object) 
event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event); 
// get a reference to the hash table of event handlers 
var handlers = this.events[event.type]; 
// execute each event handler 
for (var i in handlers) { 
this.$$handleEvent = handlers[i]; 
if (this.$$handleEvent(event) === false) { 
returnValue = false; 
} 
} 
return returnValue; 
}; 

function fixEvent(event) { 
// add W3C standard event methods 
event.preventDefault = fixEvent.preventDefault; 
event.stopPropagation = fixEvent.stopPropagation; 
return event; 
}; 
fixEvent.preventDefault = function() { 
this.returnValue = false; 
}; 
fixEvent.stopPropagation = function() { 
this.cancelBubble = true; 
}; 
function tableAddEvent(){ 

}; 

return{ 
add:addEvent, 
remove:removeEvent, 
$:getByid 
} 
}(); 

var outEleObj = EventUtil.$("outEle"); 
//addEvent.apply(EventUtil,[outEleObj,"click",eventfun3]); 
//EventUtil.add(outEleObj,"click",eventfun3); 
var inputObj = EventUtil.$("button4"); 
var tableEle = EventUtil.$("htmlEleTable"); 
var tabTrEle = tableEle.getElementsByTagName("tr"); 
EventUtil.add(tableEle,"click",eventfun3); 
for (i=0; i<tabTrEle.length; i++){ 
EventUtil.add(tabTrEle[i],"click",eventfun3); 
} 
EventUtil.remove(tableEle,"click",eventfun3);//事件冒删除方法 
EventUtil.add(tableEle,"click",eventfun3);//事件冒泡添加方法 
//EventUtil.add(inputObj,"click",eventfun3); 
//EventUtil.remove(outEleObj,"click",eventfun3); 
//console.log(addEvent); 
//addEvent(inputObj,"click",eventfun3,true); 
//delEvent(outEleObj,"click",eventfun3,false); 
</script> 
</body> 
</html>
Nach dem Login kopieren

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Warum kann das Klickereignis in js nicht wiederholt ausgeführt werden? Warum kann das Klickereignis in js nicht wiederholt ausgeführt werden? May 07, 2024 pm 06:36 PM

Klickereignisse in JavaScript können aufgrund des Event-Bubbling-Mechanismus nicht wiederholt ausgeführt werden. Um dieses Problem zu lösen, können Sie die folgenden Maßnahmen ergreifen: Verwenden Sie die Ereigniserfassung: Geben Sie einen Ereignis-Listener an, der ausgelöst wird, bevor das Ereignis in die Luft sprudelt. Übergabe von Ereignissen: Verwenden Sie event.stopPropagation(), um das Sprudeln von Ereignissen zu stoppen. Verwenden Sie einen Timer: Lösen Sie den Ereignis-Listener nach einiger Zeit erneut aus.

Was bewirkt die Ereigniserfassung? Was bewirkt die Ereigniserfassung? Nov 01, 2023 pm 01:16 PM

Zu den Funktionen der Ereigniserfassung gehören das bequeme Abrufen von Zielelementen und Kontextinformationen, das wirksame Verhindern von Ereignisblasen, das Anpassen der Ereignisverarbeitungslogik und das Verbessern der Seitenreaktionsgeschwindigkeit. Detaillierte Einführung: 1. Es ist praktisch, das Zielelement und die Kontextinformationen abzurufen. Wenn in der Ereigniserfassungsphase ein Ereignis auftritt, beginnt der Browser beim äußersten Element und sucht Schicht für Schicht nach Elementen, die mit dem Ereignis verknüpft sind, bis zum Ziel Element gefunden. 2. Ereignisblasenbildung wirksam verhindern. Wenn ein Ereignis auftritt, wird es Schicht für Schicht weitergegeben, beginnend mit dem äußersten Element.

Implementieren Sie die Funktion zur Überwachung von Kartenereignissen mithilfe von JavaScript und Tencent Maps Implementieren Sie die Funktion zur Überwachung von Kartenereignissen mithilfe von JavaScript und Tencent Maps Nov 21, 2023 pm 04:10 PM

Leider kann ich Ihnen kein vollständiges Codebeispiel zur Verfügung stellen. Ich kann Ihnen jedoch eine Grundidee und einen Beispielcodeausschnitt als Referenz zur Verfügung stellen. Das Folgende ist ein einfaches Beispiel für die Kombination von JavaScript und Tencent Map zur Implementierung der Kartenereignisüberwachungsfunktion: //Einführung in die API von Tencent Map constscript=document.createElement('script');script.src='https://map.

So verhindern Sie wirksam, dass Ereignisse übersprudeln So verhindern Sie wirksam, dass Ereignisse übersprudeln Feb 19, 2024 pm 08:25 PM

Um das Blasen von Ereignissen effektiv zu verhindern, sind bestimmte Codebeispiele erforderlich. Wenn ein Ereignis für ein Element ausgelöst wird, erhält das übergeordnete Element manchmal Probleme bei der Webentwicklung Wir müssen lernen, wie wir effektiv verhindern können, dass sich Ereignisse aufblähen. In JavaScript können wir verhindern, dass ein Ereignis sprudelt, indem wir die Methode stopPropagation() des Ereignisobjekts verwenden. Diese Methode kann innerhalb eines Ereignishandlers aufgerufen werden, um die Weitergabe des Ereignisses an das übergeordnete Element zu verhindern.

Praktische Anwendungsfälle von Event-Bubbling und Event-Capturing in der Front-End-Entwicklung Praktische Anwendungsfälle von Event-Bubbling und Event-Capturing in der Front-End-Entwicklung Jan 13, 2024 pm 01:06 PM

Anwendungsfälle von Event-Bubbling und Event-Capturing in der Front-End-Entwicklung Event-Bubbling und Event-Capturing sind zwei Mechanismen zur Ereignisbereitstellung, die häufig in der Front-End-Entwicklung verwendet werden. Durch das Verständnis und die Anwendung dieser beiden Mechanismen können wir das interaktive Verhalten auf der Seite flexibler handhaben und die Benutzererfahrung verbessern. In diesem Artikel werden die Konzepte des Event-Bubbling und der Event-Erfassung vorgestellt und mit spezifischen Codebeispielen kombiniert, um ihre Anwendungsfälle in der Front-End-Entwicklung zu demonstrieren. 1. Die Konzepte Event Bubbling (EventBubbling) beziehen sich auf den Prozess des Auslösens eines Elements.

Häufig verwendete Modifikatoren in Vue Häufig verwendete Modifikatoren in Vue May 08, 2024 pm 04:27 PM

Modifikatoren von Vue.js werden verwendet, um das Verhalten von Anweisungen zu ändern. Zu den häufig verwendeten Modifikatoren gehören: verzögerte Ausführung (.lazy), zwischengespeicherte Berechnungsergebnisse (.memo), erzwungene Konvertierung in Zahlen (.number), Leerzeichen kürzen (.trim), und Blockierung Standardverhalten (.prevent), Ereignissprudeln verhindern (.stop), nur einmal ausführen (.once), nur auf dem aktuellen Element auslösen (.self), während der Ereigniserfassungsphase auslösen (.capture), auslösen, wenn das Das Element betritt das DOM (.enter) und wird ausgelöst, wenn das Element das DOM verlässt (.leave).

Was ist Event-Bubbling-Ereigniserfassung? Was ist Event-Bubbling-Ereigniserfassung? Nov 21, 2023 pm 02:10 PM

Ereignis-Bubbling und Ereigniserfassung beziehen sich auf zwei unterschiedliche Arten der Ereignisweitergabe bei der Verarbeitung von Ereignissen im HTML-DOM. Ausführliche Einführung: 1. Ereignisblasen bedeutet, dass sich das Ereignis vom innersten Element zum äußersten Element ausbreitet, wenn ein Element ein Ereignis auslöst. Das heißt, das Ereignis wird zuerst am Auslöseelement ausgelöst und sprudelt dann Schritt für Schritt nach oben, bis es das Wurzelelement 2 erreicht. Die Ereigniserfassung ist der umgekehrte Prozess. Das Ereignis beginnt am Wurzelelement und wird Schritt für Schritt erfasst Schritt, bis das Triggerereignis erreicht ist.

Häufige Probleme und Lösungen, die durch Event-Bubbling verursacht werden Häufige Probleme und Lösungen, die durch Event-Bubbling verursacht werden Feb 20, 2024 pm 06:48 PM

Ereignis-Bubbling (Ereignis-Bubbling) bedeutet, dass im DOM, wenn ein Ereignis für ein Element ausgelöst wird, es zum übergeordneten Element des Elements sprudelt und dann zu übergeordneten Elementen der höheren Ebene sprudelt, bis es zu sprudelt der Wurzelknoten des Dokuments. Während das Bubbling von Ereignissen in vielen Situationen nützlich ist, kann es manchmal zu häufigen Problemen führen. In diesem Artikel werden einige häufig auftretende Probleme erläutert und Lösungen bereitgestellt. Das erste häufige Problem besteht darin, ein Ereignis mehrmals auszulösen. Wenn ein Ereignis für ein Element auf mehrere übergeordnete Elemente übertragen wird, kann dies zu Problemen führen

See all articles