Introduction to event handling in DOM_DOM
This interface provides 'addEventListener' and 'removeEventListener' methods for binding or unbinding an EventListeners interface to an EventTarget.
DOM 2 Events defines the Event interface to provide event context information. It provides several standard properties and methods. The object that implements the Event interface is generally passed into the event processing function as the first parameter to provide some information related to the current event.
Event registration
According to the description in DOM 2 Events, nodes use the 'addEventListener' and 'removeEventListener' methods to bind and unbind event listeners, but IE6 IE7 IE8 does not support these two methods, and uses ' attachEvent' and 'detachEvent' methods as alternatives, Opera supports both methods. Chrome Safari Firefox only supports standard methods.
In order to solve browser compatibility issues, you can customize functions to solve it. For example:
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;
}
}
};
About 'addEventListener' There are several points to note with 'attachEvent':
IE does not support triggering event listeners in the capture phase, and the 'attachEvent' method does not provide parameters to indicate whether to respond to events triggered in the capture phase;
'addEventListener' and 'attachEvent' can register multiple event listeners;
Register the same event listener multiple times for the same event in Firefox Chrome Safari Opera, and the duplicate registrations will be discarded; and the event listeners that are repeatedly registered in IE The handler will be executed repeatedly multiple times;
When multiple event listeners are registered for the same element, the execution order of event listeners in IE6 IE7 is random, IE8 is in reverse order, and Firefox Chrome Safari Opera is sequential;
When there is an illegal event listener (non-function) in the event listener registered by the element, an exception will be thrown in IE Firefox, while in Chrome Safari Opera, the illegal event listener will be ignored and other execution will continue. event listener.
Event object
In IE, the event object is saved and maintained as a global variable. All browser events, whether triggered by the user or other events, will update the window.event object. So in the code, you can easily get the event object by simply calling window.event, and then use event.srcElement to get the element that triggered the event for further processing.
For standard DOM processing, the event object is not a global object. Generally, it occurs on-site and is used on-site. The event object is automatically passed to the corresponding event processing function. In the code, the first parameter of the function is the event object.
In order to solve compatibility issues, it is usually handled as follows in the code:
function handler(e){
e = e || window.event;
}
It should be noted that when using for event registration, the event object cannot be obtained in the event processing method in the standard way.
The reason is that onclick="foo()" is executed directly. The foo() function does not have any parameters passed to the foo function.
There are two ways to solve this problem.
First, change the registration method to . Note that the event here is not a formal parameter, but It is an actual parameter and must be named event. This way the foo function can get the event parameters.
Second, do not modify the registered code and handle it in the event processing method. The key is that the event object actually exists at this time, but it is not passed to the foo function. We can find the function that calls the foo function. Of course, this is a system function. It doesn't matter. We can get the current call of the foo function through foo.caller. Function, the first parameter of this function is the event object, so we can get the event object like this. foo.caller.arguments[0].
Note:
Only when you use the attachEvent method to register an event listener, IE supports using the first parameter passed in by the event listener as the event object;
Chrome Safari Opera supports both methods of obtaining event objects;
Firefox only supports the standard method of obtaining event objects.
Attributes of the event object
IE has limited support for the standard attributes and methods of the event object. For most attributes and methods, IE provides a set of non-standard alternatives; while Firefox, Chrome, Safari Opera, in addition to full support In addition to the standard properties and methods of the event object, it also supports non-standard alternatives provided by IE to varying degrees.
Use characteristics to judge and use non-standard methods and properties corresponding to the standard
target srcElement
preventDefault() returnValue
stopPropagation() cancelBubble
relatedTarget fromElement toElement
For example:
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 ;
}
}
Reference:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics





A brief introduction to python GUI programming GUI (Graphical User Interface, graphical user interface) is a way that allows users to interact with computers graphically. GUI programming refers to the use of programming languages to create graphical user interfaces. Python is a popular programming language that provides a rich GUI library, making Python GUI programming very simple. Introduction to Python GUI library There are many GUI libraries in Python, the most commonly used of which are: Tkinter: Tkinter is the GUI library that comes with the Python standard library. It is simple and easy to use, but has limited functions. PyQt: PyQt is a cross-platform GUI library with powerful functions.

Introduction CircularQueue is an improvement on linear queues, which was introduced to solve the problem of memory waste in linear queues. Circular queues use the FIFO principle to insert and delete elements from it. In this tutorial, we will discuss the operation of a circular queue and how to manage it. What is a circular queue? Circular queue is another type of queue in data structure where the front end and back end are connected to each other. It is also known as circular buffer. It operates similarly to a linear queue, so why do we need to introduce a new queue in the data structure? When using a linear queue, when the queue reaches its maximum limit, there may be some memory space before the tail pointer. This results in memory loss, and a good algorithm should be able to make full use of resources. In order to solve the waste of memory

Event processing library in PHP8.0: Event With the continuous development of the Internet, PHP, as a popular back-end programming language, is widely used in the development of various Web applications. In this process, the event-driven mechanism has become a very important part. The event processing library Event in PHP8.0 will provide us with a more efficient and flexible event processing method. What is event handling? Event handling is a very important concept in the development of web applications. Events can be any kind of user row

Bubbling events mean that in web development, when an event is triggered on an element, the event will propagate to upper elements until it reaches the document root element. This propagation method is like a bubble gradually rising from the bottom, so it is called a bubbling event. In actual development, knowing and understanding how bubbling events work is very important to handle events correctly. The following will introduce the concept and usage of bubbling events in detail through specific code examples. First, we create a simple HTML page with a parent element and three children

Application scenarios of event bubbling and the types of events it supports. Event bubbling means that when an event on an element is triggered, the event will be passed to the parent element of the element, and then to the ancestor element of the element until it is passed to the root node of the document. It is an important mechanism of the event model and has a wide range of application scenarios. This article will introduce the application scenarios of event bubbling and explore the types of events it supports. 1. Application scenarios Event bubbling has a wide range of application scenarios in web development. Here are several common application scenarios. form validation in form

Analysis of the v-on directive in Vue: How to handle form submission events In Vue.js, the v-on directive is used to bind event listeners and can capture and process various DOM events. Among them, processing form submission events is one of the common operations in Vue. This article will introduce how to use the v-on directive to handle form submission events and provide specific code examples. First of all, it is necessary to clarify that the form submission event in Vue refers to the event triggered when the user clicks the submit button or presses the Enter key. In Vue, you can pass

In Vue, there are often some nested components, and events need to be passed between these nested components. In Vue, the $emit event is used for event communication between components. However, in some cases, we need to pass the event handler of a parent component to a nested child component. In this case, using the $emit event is not appropriate. At this time, you can use the $listeners provided by Vue to pass the event processing function. So, what are $listeners?

In-depth study of the key code implementation of PHP and Vue in the brain map function Summary: This article will delve into the key code implementation of PHP and Vue in the realization of the mind map function. Brain mapping is a graphical tool commonly used to display thinking structures and relationships. It is widely used in fields such as project planning, knowledge management, and information organization. By learning the relevant knowledge of PHP and Vue, we can implement a simple yet powerful brain mapping application. Understand PHPPHP is a commonly used server-side scripting language. It is easy to learn and highly scalable
