DOM 中的事件处理介绍_DOM
该接口提供了 'addEventListener' 和 'removeEventListener' 方法,用来绑定或解绑一个 EventListeners 接口到一个 EventTarget。
DOM 2 Events 中定义了 Event 接口,用来提供事件的上下文信息,它提供了若干标准属性和方法。 实现 Event 接口的对象一般作为第一个参数传入事件处理函数,以用来提供当前事件相关的一些信息。
事件注册
根据 DOM 2 Events 中描述,节点使用 'addEventListener' 和 'removeEventListener' 方法绑定和解绑事件监听器,但 IE6 IE7 IE8 不支持这两个方法, 而使用 'attachEvent' 和 'detachEvent' 方法作为替代方案,Opera 两类方法都支持。Chrome Safari Firefox 只支持标准方法。
为了解决浏览器兼容问题,可以自定义函数来解决。例如:
var EventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},
removeHandler: function (element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detachEvent("on" + type, handler);
} else {
element["on" + type] = null;
}
}
};
关于 'addEventListener' 和 'attachEvent' 有几点需要注意:
IE 不支持在捕获阶段触发事件监听器,'attachEvent' 方法没有提供参数说明是否响应在捕获阶段触发的事件;
'addEventListener' 和 'attachEvent' 都可以注册多个事件监听器;
在 Firefox Chrome Safari Opera 中给同一事件注册同一个事件监听器多次,重复注册的会被丢弃;而在 IE 中重复注册的事件监听器会被重复执行多次;
当给同一元素注册了多个事件监听器的时候,IE6 IE7 的事件监听器执行顺序是随机的,IE8 是倒序的,Firefox Chrome Safari Opera 是顺序的;
当元素注册的事件监听器中有非法的事件监听器时(非函数),在 IE Firefox 中会抛出异常,而在 Chrome Safari Opera 中则会忽略非法的事件监听器,继续执行其他的事件监听器。
事件对象
在ie中,事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发的,还是其他事件, 都会更新window.event 对象。 所以在代码中,只要轻松调用 window.event 就可以轻松获取 事件对象, 再 event.srcElement 就可以取得触发事件的元素进行进一步处理。
对于标准的 DOM 处理来说, 事件对象却不是全局对象,一般情况下,是现场发生,现场使用,把事件对象自动传递给对应的事件处理函数。 在代码中,函数的第一个参数就是事件对象了。
为了解决兼容性问题,通常在代码中如下处理:
function handler(e){
e = e || window.event;
}
需要注意的是,使用 进行事件注册,标准方式下却不能在事件处理方法中取得事件对象。
原因是 onclick="foo()" 就是直接执行了, foo() 函数,没有任何参数传递给 foo 函数。
有两个办法解决这个问题。
第一,将注册的方法修改为 ,注意,这里的 event 不是形参,而是实参,必须名为 event。这样 foo 函数就可以得到事件参数了。
第二,不修改注册的代码,在事件处理方法上进行处理。关键在于此时实际上存在事件对象,只不过没有传递给 foo 函数罢了,我们可以找到调用 foo 函数的那个函数,当然这是一个系统函数,没有关系,通过 foo.caller 可以取得当前调用 foo 函数的函数,这个函数的第一个参数就是事件对象,所以,我们可以这样取得这个事件对象了。foo.caller.arguments[0]。
注意:
只有在使用 attachEvent 方法注册事件监听器的时候,IE 才支持使用事件监听器传入的第一个参数作为事件对象的方式;
Chrome Safari Opera 两种获取事件对象的方式都支持;
Firefox 只支持获取事件对象的标准方式。
事件对象的属性
IE 对事件对象的标准属性和方法支持有限,针对大部分属性和方法,IE 都提供了一套替代非标准的替代方案; 而 Firefox Chrome Safari Opera 除了全面支持事件对象的标准属性和方法外,还在不同程度上支持了 IE 提供的非标准替代方案。
使用特性判断使用与标准对应的非标准方法及属性
target srcElement
preventDefault() returnValue
stopPropagation() cancelBubble
relatedTarget fromElement toElement
例如:
getEvent: function (event) {
return event ? event : window.event;
},
getTarget: function (event) {
return event.target || event.srcElement;
},
preventDefault: function (event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
stopPropagation: function (event) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
参考资料:

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Eine kurze Einführung in die Python-GUI-Programmierung. GUI (Graphical User Interface, grafische Benutzeroberfläche) ist eine Möglichkeit, Benutzern die grafische Interaktion mit Computern zu ermöglichen. Unter GUI-Programmierung versteht man die Verwendung von Programmiersprachen zur Erstellung grafischer Benutzeroberflächen. Python ist eine beliebte Programmiersprache, die eine umfangreiche GUI-Bibliothek bietet und die Python-GUI-Programmierung sehr einfach macht. Einführung in die Python-GUI-Bibliothek Es gibt viele GUI-Bibliotheken in Python, von denen die am häufigsten verwendeten sind: Tkinter: Tkinter ist die GUI-Bibliothek, die mit der Python-Standardbibliothek geliefert wird. Sie ist einfach und benutzerfreundlich, verfügt jedoch über begrenzte Funktionen. PyQt: PyQt ist eine plattformübergreifende GUI-Bibliothek mit leistungsstarken Funktionen.

Einführung CircularQueue ist eine Verbesserung linearer Warteschlangen, die eingeführt wurde, um das Problem der Speicherverschwendung in linearen Warteschlangen zu lösen. Zirkuläre Warteschlangen nutzen das FIFO-Prinzip, um Elemente daraus einzufügen und daraus zu löschen. In diesem Tutorial besprechen wir den Betrieb einer zirkulären Warteschlange und deren Verwaltung. Was ist eine kreisförmige Warteschlange? Eine kreisförmige Warteschlange ist eine andere Art von Warteschlange in der Datenstruktur, bei der das Front-End und das Back-End miteinander verbunden sind. Er wird auch als Ringpuffer bezeichnet. Sie funktioniert ähnlich wie eine lineare Warteschlange. Warum müssen wir also eine neue Warteschlange in die Datenstruktur einführen? Wenn Sie eine lineare Warteschlange verwenden und die Warteschlange ihr maximales Limit erreicht, ist möglicherweise etwas Speicherplatz vor dem Endzeiger vorhanden. Dies führt zu Speicherverlust und ein guter Algorithmus sollte in der Lage sein, die Ressourcen voll auszunutzen. Um die Speicherverschwendung zu lösen

Ereignisverarbeitungsbibliothek in PHP8.0: Ereignis Mit der kontinuierlichen Entwicklung des Internets wird PHP als beliebte Back-End-Programmiersprache häufig bei der Entwicklung verschiedener Webanwendungen verwendet. In diesem Prozess ist der ereignisgesteuerte Mechanismus zu einem sehr wichtigen Teil geworden. Die Ereignisverarbeitungsbibliothek Event in PHP8.0 bietet uns eine effizientere und flexiblere Ereignisverarbeitungsmethode. Was ist Event-Handling? Event-Handling ist ein sehr wichtiges Konzept bei der Entwicklung von Webanwendungen. Ereignisse können jede Art von Benutzerzeile sein

Bubbling-Ereignisse bedeuten, dass in der Webentwicklung ein Ereignis, das für ein Element ausgelöst wird, an die oberen Elemente weitergegeben wird, bis es das Dokumentstammelement erreicht. Diese Ausbreitungsmethode ähnelt einer Blase, die allmählich vom Boden aufsteigt, und wird daher als Blasenereignis bezeichnet. In der tatsächlichen Entwicklung ist es sehr wichtig zu wissen und zu verstehen, wie Bubbling-Ereignisse funktionieren, um Ereignisse richtig zu handhaben. Im Folgenden werden das Konzept und die Verwendung von Bubbling-Ereignissen anhand spezifischer Codebeispiele ausführlich vorgestellt. Zuerst erstellen wir eine einfache HTML-Seite mit einem übergeordneten Element und drei untergeordneten Elementen

Anwendungsszenarien für Event-Bubbling und die von ihm unterstützten Ereignistypen. Event-Bubbling bedeutet, dass, wenn ein Ereignis für ein Element ausgelöst wird, das Ereignis an das übergeordnete Element des Elements und dann an das Vorgängerelement des Elements weitergeleitet wird wird an den Wurzelknoten des Dokuments übergeben. Es ist ein wichtiger Mechanismus des Ereignismodells und hat ein breites Spektrum an Anwendungsszenarien. In diesem Artikel werden die Anwendungsszenarien des Event-Bubbling vorgestellt und die unterstützten Ereignistypen untersucht. 1. Anwendungsszenarien Event-Bubbling hat eine breite Palette von Anwendungsszenarien in der Webentwicklung. Hier sind einige gängige Anwendungsszenarien. Formularvalidierung im Formular

Eingehende Untersuchung der Schlüsselcode-Implementierung von PHP und Vue in der Brain-Map-Funktion Zusammenfassung: In diesem Artikel wird die Schlüsselcode-Implementierung von PHP und Vue in der Brain-Map-Funktion eingehend untersucht. Brain Mapping ist ein grafisches Werkzeug, das häufig zur Darstellung von Denkstrukturen und Beziehungen verwendet wird. Es wird häufig in Bereichen wie Projektplanung, Wissensmanagement und Informationsorganisation eingesetzt. Durch das Erlernen der relevanten PHP- und Vue-Kenntnisse können wir eine einfache, aber leistungsstarke Brain-Mapping-Anwendung implementieren. Verstehen Sie PHPPHP ist eine häufig verwendete serverseitige Skriptsprache. Es ist leicht zu erlernen und hoch skalierbar

Analyse der v-on-Direktive in Vue: Umgang mit Formularübermittlungsereignissen In Vue.js wird die v-on-Direktive zum Binden von Ereignis-Listenern verwendet und kann verschiedene DOM-Ereignisse erfassen und verarbeiten. Unter diesen ist die Verarbeitung von Formularübermittlungsereignissen einer der häufigsten Vorgänge in Vue. In diesem Artikel wird erläutert, wie Sie mit der v-on-Direktive Formularübermittlungsereignisse verarbeiten, und es werden spezifische Codebeispiele bereitgestellt. Zunächst muss klargestellt werden, dass sich das Formularübermittlungsereignis in Vue auf das Ereignis bezieht, das ausgelöst wird, wenn der Benutzer auf die Schaltfläche „Senden“ klickt oder die Eingabetaste drückt. In Vue können Sie bestehen

Als beliebte Programmiersprache stößt Java während des Entwicklungsprozesses häufig auf verschiedene Fehler und Probleme. Unter diesen sind Fehler bei der Verarbeitung von JavaFX-Ereignissen ein häufiges Problem, das zum Absturz oder Ausfall der Anwendung führen kann. In diesem Artikel werden die Ursachen, Lösungen und vorbeugenden Maßnahmen von JavaFX-Ereignisverarbeitungsfehlern vorgestellt, um Entwicklern dabei zu helfen, solche Fehler zu vermeiden und zu beheben. Fehlerursachen Fehler bei der Verarbeitung von JavaFX-Ereignissen werden normalerweise durch folgende Gründe verursacht: 1) Codefehler: Beim Schreiben von JavaFX-Code treten häufig Codefehler auf
