This document is also available in these non-normative formats: XML file, plain text, PostScript file, PDF file, single HTML file, and ZIP file.
Copyright ©2003 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
This specification defines the Document Object Model Events Level 3, a generic platform- and language-neutral event system which allows registration of event handlers, describes event flow through a tree structure, and provides basic contextual information for each event. The Document Object Model Events Level 3 builds on the Document Object Model Events Level 2 [DOM Level 2 Events].
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.
This document contains the Document Object Model Level 3 Events specification.
This is a Last Call Working Draft for review by W3C members and other interested parties. The Last Call review period ends on 1 May 2003. The list of issues is also available. Please, send your comments on this document to the public mailing list www-dom@w3.org. An archive is available at http://lists.w3.org/Archives/Public/www-dom/.
It is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". This is work in progress and does not imply endorsement by, or the consensus of, either W3C or members of the DOM Working Group.
Patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page.
This document has been produced as part of the W3C DOM Activity. The authors of this document are the DOM Working Group members.
A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
This document is published under the W3C® Document Copyright Notice and License. The bindings within this document are published under the W3C® Software Copyright Notice and License. The software license requires "Notice of any changes or modifications to the W3C files, including the date changes were made." Consequently, modified versions of the DOM bindings must document that they do not conform to the W3C standard; in the case of the IDL definitions, the pragma prefix can no longer be 'w3c.org'; in the case of the Java language binding, the package names can no longer be in the 'org.w3c' package.
Note: This section is a copy of the W3C® Document Notice and License and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231.
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
Public documents on the W3C site are provided by the copyright holders under the following license. By using and/or copying this document, or the W3C document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
Permission to copy, and distribute the contents of this document, or the W3C document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:
When space permits, inclusion of the full text of this NOTICE should be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.
No right to create modifications or derivatives of W3C documents is granted pursuant to this license. However, if additional requirements (documented in the Copyright FAQ) are satisfied, the right to create modifications or derivatives is sometimes granted by the W3C to individuals complying with those requirements.
THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
Note: This section is a copy of the W3C® Software Copyright Notice and License and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
Note: This section is a copy of the W3C® Short Software Notice and could be found at http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231
Copyright © 2003 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved.
Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved. This work is distributed under the W3C® Software License [1] in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
DOM Events is designed with two main goals. The first goal is the design of an event system which allows registration of event listeners, describes event flow through a tree structure. Additionally, the specification will provide standard modules of events for user interface control and document mutation notifications, including defined contextual information for each of these event modules.
The second goal of the DOM Events is to provide a common subset of the current event systems used in DOM Level 0 browsers. This is intended to foster interoperability of existing scripts and content. It is not expected that this goal will be met with full backwards compatibility. However, the specification attempts to achieve this when possible.
The following sections of the specification define both the specification for the DOM Event Model and a number of conformant event modules designed for use within the model. The DOM Event Model consists of:
This document specifies an event flow for tree-based structures: DOM event flow. While it is expected that HTML and XML applications will follow this event flow, applications might reuse the interfaces defined in this document for non tree-based structure. In that case, it is the responsibility of such application to define their event flow and how it relates to the DOM event flow. As example of such use could be found in [DOM Level 3 Load and Save].
An implementation is DOM Level 3 Events conformant if it
supports the Core module defined in [DOM Level 2 Core], the DOM event flow and the interfaces
with their associated semantics defined in Basic interfaces. An
implementation conforms to a DOM Level 3 Events module if it
conforms to DOM Level 3 Events and the event types defined in the
module. An implementation conforms to an event type if it conforms
to its associated semantics and DOM interfaces. For example, an
implementation conforms to the DOM Level 3 User Interface Events
module (see User Interface event
types) if it conforms to DOM Level 3 Events (i.e. implements
all the basic interfaces), can generate the event types
{"http://www.w3.org/2001/xml-events", "DOMActivate"}
{"http://www.w3.org/2001/xml-events", "DOMFocusIn"}
{"http://www.w3.org/2001/xml-events", "DOMFocusOut"}
accordingly to their semantics, supports the UIEvent
interface,
and conforms to DOM Level 2 Core module.
Note: An implementation which does not conform to an
event module can still implement the DOM interfaces associated with
it. The DOM application can then create an event object using the
DocumentEvent.createEvent
method and dispatch an event type associated with this interface
using the EventTarget.dispatchEvent
method.
A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "Events"
and
"3.0"
(respectively) to determine whether or not DOM
Level 3 Events is supported by the implementation. In order to
fully support DOM Level 3 Events, an implementation must also
support the "Core" feature defined in the DOM Level 2 Core
specification [DOM Level 2 Core] and use the DOM event flow. For additional
information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core]. DOM Level 3 Events
is built on top of DOM Level 2 Events [DOM Level 2 Events], i.e. a
DOM Level 3 Events implementation where hasFeature("Events",
"3.0")
returns true
must also return
true
when the version
number is
"2.0"
, ""
or, null
.
Each event module describes its own feature string in the event module listing.
The DOM event flow is the process through which the event originates from the DOM Events implementation and is dispatched into a tree. Each event has an event target, a targeted node in the case of the DOM Event flow, toward which the event is dispatched by the DOM Events implementation.
The event is dispatched following a path from the root of the tree to this target node. It can then be handled locally at the target node level or from any target ancestor higher in the tree. The event dispatching (also called event propagation) occurs in three phases:
Note: An SVG 1.0 version of the representation above is also available.
The target ancestors are determined before the initial dispatch of the event. If the target node is removed during the dispatching, or a target ancestor is added or removed, the event propagation will always be based on the target node and the target ancestors determined before the dispatch.
Some events may not necessarily accomplish the three phases of
the DOM event flow, e.g. the event could only be defined for one or
two phases. As an example, events defined in this specification
will always accomplish the capture and target phases but some will
not accomplish the bubbling phase ("bubbling events" versus
"non-bubbling events", see also the Event.bubbles
attribute).
Each node encountered during the dispatch of the event may contain event listeners.
Event listeners can be registered on all nodes in the tree for a specific type of event or event category, phase, and group.
If the event listener is registered on a node while an event gets processed on this node, the event listener will not be triggered during the current phase but may be triggered during a later phase in the event flow, i.e. the bubbling phase.
An event listener is always part of a group. It is either explicitly in a group if a group has been specified at the registration or implicitly in the default group if no group has been specified. Within a group, event listeners are ordered in their order of registration. If two event listeners {A1, A2}, that are part of the same group, are registered one after the other (A1, then A2) for the same phase, the DOM event flow guarantees their triggering order (A1, then A2). If the two listeners are not part of the same group, no specification is made as to the order in which they will be triggered.
Note: While this specification does not specify a full ordering (i.e. groups are still unordered), it does specify ordering within a group. This implies that if the event listeners {A1, A2, B1, B2}, with A and B being two different groups, are registered for the same phase in the following order: A1, A2, B1, and B2. The following triggering orders are possible and conform to the DOM event flow: {A1, A2, B1, B2}, {A1, B1, A2, B2}, {B1, A1, A2, B2}, {A1, B1, B2, A2}, {B1, A1, B2, A2}, {B1, B2, A1, A2}. DOM Events implementations may impose priorities on groups but DOM applications must not rely on it. Unlike this specification, [DOM Level 2 Events] did not specify any triggering order for event listeners.
When the event is dispatched through the tree, from node to node, event listeners registered on the node are triggered if:
If an event listener is removed from a node while an event is being processed on the node, it will not be triggered by the current actions. Once removed, the event listener is never invoked again (unless registered again for future processing).
It is expected that actions taken by EventListener
s
may cause additional events to be dispatched. Additional events
should be handled in a synchronous manner and may cause reentrance
into the event model. If an event listener fires a new event using
EventTarget.dispatchEvent
,
the event propagation that causes the event listener to be
triggered will resume only after the event propagation of the new
event is completed.
Since implementations may have restrictions such as stack-usage or other memory requirements, applications should not depend on how many synchronous events may be triggered.
All event listeners are part of a group (see Registration of event listeners). An event listener may prevent event listeners that are part of a same group from being triggered. The effect could be:
If two event listeners are registered for two different groups, one cannot prevent the other from being triggered.
Implementations may have a default action associated with an
event type. An example is the [HTML 4.01] form element. When the user
submits the form (e.g. by pressing on a submit button), the event
{"http://www.w3.org/2001/xml-events", "submit"}
is
dispatched to the element and the default action for this event
type is generally to send a request to a Web server with the
parameters from the form.
The default actions are not part of the DOM Event flow. Before invoking a default action, the implementation must first dispatch the event as described in the DOM event flow.
A cancelable event is an event associated with a default action which is allowed to be canceled during the DOM event flow. At any phase during the event flow, the triggered event listeners have the option of canceling the default action or allowing the default action to proceed. In the case of the hyperlink in the browser, canceling the action would have the result of not activating the hyperlink. Not all events defined in this specification are cancelable events.
Different implementations will specify their own default actions, if any, associated with each event. The DOM Events specification does not attempt to specify these actions.
This specification does not provide mechanisms for accessing default actions or adding new ones.
Note: Some implementations also provide default actions
before the dispatch of the event. It is not possible to
cancel those default actions and this specification does not
address them. An example of such default actions can be found in
[DOM
Level 2 HTML] on the HTMLInputElement.checked
attribute.
Each event is associated with a type, called event type.
The event type is composed of a local name and a namespace URI as
defined in [XML Namespaces]. All events
defined in this specification use the namespace URI
"http://www.w3.org/2001/xml-events"
.
Note: As in [DOM Level 3 Core], DOM Level 3 Events
does not perform any URI normalization or canonicalization. The
URIs given to the DOM are assumed to be valid (e.g., characters
such as white spaces are properly escaped), and no lexical checking
is performed. Absolute URI references are treated as strings and compared
literally. How relative namespace URI references are
treated is undefined. To ensure interoperability only absolute
namespace URI references (i.e., URI references beginning with a
scheme name and a colon) should be used. Applications that wish to
have no namespace should use the value null
as the
namespaceURI parameter of methods. If they pass an empty string the
DOM implementation turns it into a null
.
An event type could be part of one or more categories. A category is represented using a local name and a namespace URI as defined in [XML Namespaces]. The event types defined in this specification are not associated with one or more event categories and this specification does not provide methods to associate them. Other specifications may create and associate event categories with event listeners but in such case would need to inform the dispatch mechanism of those event categories.
Depending on the level of DOM support, or the devices used to
display (e.g. screen) or interact with (e.g. mouse, keyboard, touch
screen, voice, ...), these event types could be generated by the
implementation. When used with an [XML 1.0] or [HTML 4.01]
application, the specifications of those languages may restrict the
semantics and scope (in particular the possible target nodes)
associated with an event type. For example,
{"http://www.w3.org/2001/xml-events", "click"}
can be
targeted to all [XHTML 1.0] elements but applet, base,
basefont, bdo, br, font, frame, frameset, head, html, iframe,
isindex, meta, param, script, style, and title. Refer to the
specification defining the language used in order to find those
restrictions or to find event types that are not defined in this
document.
The following table defines all event types provided in this specification (with the exception of two event types preserved for backward compatibility with [HTML 4.01]). All events will accomplish the capture phase and target phases, but not all of them will accomplish the bubbling phase (see also DOM event flow). Some events are not cancelable (see Default actions and cancelable events). Contextual information related to the event type are accessible using DOM interfaces.
Event type | Description | Bubbling phase | Cancelable | Target node | DOM interface |
---|---|---|---|---|---|
"http://www.w3.org/2001/xml-events",
"DOMActivate" |
An element is activated,
for instance, using a mouse device, a keyboard device, or a voice
command.
Note: The activation of an element is device dependent but is also application dependent, e.g. a link in a document can be activated using a mouse click or a mouse double click. |
Yes | Yes | Element |
UIEvent |
"http://www.w3.org/2001/xml-events", "DOMFocusIn" |
An event target receives focus, for instance via a pointing device being moved onto an element or using keyboard navigation. The focus is given to the element before the dispatch of this event type. | Yes | No | Element |
UIEvent |
"http://www.w3.org/2001/xml-events",
"DOMFocusOut" |
A event target loses focus, for instance via a pointing device being moved out of an element or by tabbing navigation out of the element. The focus is taken from the element before the dispatch of this event type. | Yes | No | Element |
UIEvent |
"http://www.w3.org/2001/xml-events", "textInput" |
One or more characters have been entered. The characters can originate from a variety of sources. For example, it could be a character resulting from a key being pressed or released on a keyboard device, a character resulting from the processing of an input method editor, or resulting from a voice command. | Yes | Yes | Element |
TextEvent |
"http://www.w3.org/2001/xml-events", "click" |
A pointing device button
is clicked over an element. The definition of a click depends on
the environment configuration; i.e. may depend on the screen
location or the delay between the press and release of the pointing
device button. In any case, the target node must be the same
between the mousedown, mouseup, and click. The sequence of these
events is: {"http://www.w3.org/2001/xml-events",
"mousedown"} , {"http://www.w3.org/2001/xml-events",
"mouseup"} , and {"http://www.w3.org/2001/xml-events",
"click"} . Note that, given the definition of a click, If one
or more of the event types
{"http://www.w3.org/2001/xml-events", "mouseover"} ,
{"http://www.w3.org/2001/xml-events", "mousemove"} ,
and {"http://www.w3.org/2001/xml-events", "mouseout"}
occur between the press and release of the pointing device button,
the event type {"http://www.w3.org/2001/xml-events",
"click"} cannot occur. In the case of nested elements, this
event type is always targeted at the most deeply nested
element. |
Yes | Yes | Element |
MouseEvent |
"http://www.w3.org/2001/xml-events", "mousedown" |
A pointing device button is pressed over an element. In the case of nested elements, this event type is always targeted at the most deeply nested element. | Yes | Yes | Element |
MouseEvent |
"http://www.w3.org/2001/xml-events", "mouseup" |
A pointing device button is released over an element. In the case of nested elements, this event type is always targeted at the most deeply nested element. | Yes | Yes | Element |
MouseEvent |
"http://www.w3.org/2001/xml-events", "mouseover" |
A pointing device is moved onto an element. In the case of nested elements, this event type is always targeted at the most deeply nested element. | Yes | Yes | Element |
MouseEvent |
"http://www.w3.org/2001/xml-events", "mousemove" |
A pointing device is moved while it is over an element. In the case of nested elements, this event type is always targeted at the most deeply nested element. | Yes | Yes | Element |
MouseEvent |
"http://www.w3.org/2001/xml-events", "mouseout" |
A pointing device is moved away from an element. In the case of nested elements, this event type is always targeted at the most deeply nested element. | Yes | Yes | Element |
MouseEvent |
"http://www.w3.org/2001/xml-events", "keydown" |
A key is pressed down.
This event type is device dependent and relies on the capabilities
of the input devices and how they are mapped in the operating
system. This event type is generated after the keyboard mapping but
before the processing of the input
method editor. This event should logically happen before
the event {"http://www.w3.org/2001/xml-events",
"keyup"} is produced. |
Yes | Yes | Element |
KeyboardEvent |
"http://www.w3.org/2001/xml-events", "keyup" |
A key is released. This
event type is device dependent and relies on the capabilities of
the input devices and how they are mapped in the operating system.
This event type is generated after the keyboard mapping but before
the processing of the input method
editor. This event should logically happen after the event
{"http://www.w3.org/2001/xml-events", "keydown"} is
produced. |
Yes | Yes | Element |
KeyboardEvent |
"http://www.w3.org/2001/xml-events",
"DOMSubtreeModified" |
This is a general event for notification of all changes to the document. It can be used instead of the more specific events listed below. It may be dispatched after a single modification to the document or, at the implementation's discretion, after multiple changes have occurred. The latter use should generally be used to accommodate multiple changes which occur either simultaneously or in rapid succession. The target of this event is the lowest common parent of the changes which have taken place. This event is dispatched after any other events caused by the mutation(s) have occurred. | Yes | No | Document ,
DocumentFragment , Element ,
Attr |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMNodeInserted" |
A node has been added as a child of another node. This event is dispatched after the insertion has taken place. The target node of this event is the node being inserted. | Yes | No | Element ,
Attr , Text , Comment ,
CDATASection , DocumentType ,
EntityReference ,
ProcessingInstruction |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMNodeRemoved" |
A node is being removed from its parent node. This event is dispatched before the node is removed from the tree. The target node of this event is the node being removed. | Yes | No | Element ,
Attr , Text , Comment ,
CDATASection , DocumentType ,
EntityReference ,
ProcessingInstruction |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMNodeRemovedFromDocument" |
A node is being removed
from a document, either through direct removal of the node or
removal of a subtree in which it is contained. This event is
dispatched before the removal takes place. The target node of this
event type is the node being removed. If the node is being directly
removed, the event type {"http://www.w3.org/2001/xml-events",
"DOMNodeRemoved"} will fire before this event type. |
No | No | Element ,
Attr , Text , Comment ,
CDATASection , DocumentType ,
EntityReference ,
ProcessingInstruction |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMNodeInsertedIntoDocument" |
A node is being inserted
into a document, either through direct insertion of the node or
insertion of a subtree in which it is contained. This event is
dispatched after the insertion has taken place. The target node of this
event is the node being inserted. If the node is being directly
inserted, the event type
{"http://www.w3.org/2001/xml-events",
"DOMNodeInserted"} will fire before this event type. |
No | No | Element ,
Attr , Text , Comment ,
CDATASection , DocumentType ,
EntityReference ,
ProcessingInstruction |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMAttrModified" |
Occurs after an
Attr has been modified on a node. The target node of this
event is the parent Element node whose
Attr changed. It is expected that string based
replacement of an Attr value will be viewed as a
modification of the Attr since its identity does not
change. Subsequently replacement of the Attr node with
a different Attr node is viewed as the removal of the
first Attr node and the addition of the second. |
Yes | No | Element |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMCharacterDataModified" |
Occurs after
CharacterData.data or
ProcessingInstruction.data have been modified but the
node itself has not been inserted or deleted. The target node of this
event is the CharacterData node or the
ProcessingInstruction node. |
Yes | No | Text ,
Comment , CDATASection ,
ProcessingInstruction |
MutationEvent |
"http://www.w3.org/2001/xml-events",
"DOMElementNameChanged" |
Occurs after the
namespaceURI and/or the nodeName of an
Element node have been modified (e.g., the element was
renamed using Document.renameNode ). The target of this
event is the renamed Element node. |
Yes | No | Element |
MutationNameEvent |
"http://www.w3.org/2001/xml-events",
"DOMAttributeNameChanged" |
Occurs after the
namespaceURI and/or the nodeName of a
Attr node have been modified (e.g., the attribute was
renamed using Document.renameNode ). The target of this
event is the parent Element node whose
Attr has been renamed. |
Yes | No | Element |
MutationNameEvent |
"http://www.w3.org/2001/xml-events", "load" |
The DOM Implementation finishes loading the resource (such as the document) and any dependent resources (such as images, style sheets, or scripts). Dependent resources that fail to load will not prevent this event from firing if the resource that loaded them is still accessible via the DOM. | No | No | Element |
Event |
"http://www.w3.org/2001/xml-events", "unload" |
The DOM implementation removes from the environment the resource (such as the document) or any dependent resources (such as images, style sheets, scripts). The document is unloaded after the dispatch of this event type. | No | No | Element |
Event |
"http://www.w3.org/2001/xml-events", "abort" |
The loading of the document, or a resource linked from it, is stopped before being entirely loaded. | Yes | No | Element |
Event |
"http://www.w3.org/2001/xml-events", "error" |
The document, or a resource linked from it, has been loaded but cannot be interpreted according to its semantic, such as an invalid image or a script execution error. | Yes | No | Element |
Event |
"http://www.w3.org/2001/xml-events", "select" |
A user selects some text. DOM Level 3 Events does not provide contextual information to access the selected text. The selection occured before the dispatch of this event type. | Yes | No | Element |
Event |
"http://www.w3.org/2001/xml-events", "change" |
A control loses the input focus and its values has been modified since gaining focus. | Yes | No | Element |
Event |
"http://www.w3.org/2001/xml-events", "submit" |
A form, such as [HTML 4.01], [XHTML 1.0], or [XForms 1.0] forms, is submitted. | Yes | Yes | Element |
Event |
"http://www.w3.org/2001/xml-events", "reset" |
A form, such as [HTML 4.01], [XHTML 1.0], or [XForms 1.0] forms, is reset. | Yes | Yes | Element |
Event |
"http://www.w3.org/2001/xml-events", "resize" |
A document view has been resized. The resize occured before the dispatch of this event type. | Yes | No | Document
|
UIEvent |
"http://www.w3.org/2001/xml-events", "scroll" |
A document view has been scrolled. The scroll occured before the dispatch of this event type. | Yes | No | Document
|
UIEvent |
The event objects associated with the event types described above may contain context information. Refer to the description of the DOM interfaces for further information.
Namespace
URIs Were only introduced in DOM Level 3 Events and were
not part of DOM Level 2 Events. DOM Level 2 Events methods are
namespace ignorant and the event type is only represented by an XML name, specified
in the Event.type
attribute.
Therefore, while it is safe to use these methods when not
dealing with namespaces, using them and the new ones at the same
time should be avoided. DOM Level 2 Events methods solely identify
events by their Event.type
. On the
contrary, the DOM Level 3 Events methods related to namespaces,
identify attribute nodes by their Event.namespaceURI
and Event.type
.
Because of this fundamental difference, mixing both sets of methods
can lead to unpredictable results. For example, using EventTarget.addEventListenerNS
,
two event listeners (or more) could be registered using the same
type
and same useCapture
values, but
different namespaceURI
s. Calling EventTarget.removeEventListener
with that type
and useCapture
could then
remove any or none of those event listeners. The result depends on
the implementation. The only guarantee in such cases is that all
methods which access an event listener by its
namespaceURI
and type
will access the
same event listener. For instance, EventTarget.removeEventListenerNS
removes the event that EventTarget.addEventListenerNS
added.
For compatibility reasons, the dispatching of an event will
ignore namespace URIs if either the event or the event listener has
a null
namespace URI. If a DOM Level 2 event (i.e.
with a null
namespace URI) is dispatched in the DOM
tree, all event listeners that match the type
will be
triggered as described in the DOM
event flow. If a DOM Level 3 event (i.e. with a namespace URI)
is dispatched in the DOM tree, all event listener with the same
type and the same or null
namespace URI, will be
triggered as described in the DOM
event flow.
Note: This section is informative.
There are mainly two ways to associate an event listener to a node in the tree:
EventTarget
methods.EventTarget
methodsThe user can attach an event listener using the methods on the
EventTarget
interface:
myCircle.addEventListenerNS("http://www.w3.org/2001/xml-events", "DOMActivate", myListener, true, myEvtGroup);
The methods do not provide the ability to register the same event listener more than once for the same event type and the same phase. It is not possible to register an event listener:
To register an event listener, DOM applications must use the
methods EventTarget.addEventListener
and EventTarget.addEventListenerNS
.
An EventListener
being registered on an EventTarget
may
choose to have that EventListener
triggered during the capture phase by specifying the
useCapture
parameter of the EventTarget.addEventListener
or EventTarget.addEventListenerNS
methods to be true
. If false
, the EventListener
will be triggered during the target and bubbling phases.
In [XML Events], event listeners are attached using elements and attributes:
<listener event="DOMActivate" observer="myCircle" handler="#myListener" phase="capture" propagate="stop"/>
Event listeners can only be registered on Element
nodes, i.e. other Node
types are not addressable, and
cannot be registered for a specific group either, i.e. they are
always attached to the default group. The target phase and the
bubbling
phase are coupled during the registration. [XML
Events] does not address namespaces in event types. If the
value of the event
attribute of the
listener
element contains a colon (':'), it should be
interpreted as a QName as defined in [XML Schema
Part 2].
In [VoiceXML 2.0], event listeners are attached using elements:
<form> <field> <prompt>Please say something</prompt> <catch event="error.noauthorization"> <prompt>You don't have the authorization!</prompt> </catch> <catch event="connection.disconnect.hangup"> <prompt>Connection error</prompt> </catch> <catch event="connection.disconnect"> <prompt>Connection error</prompt> </catch> </field> <catch event="error"> <prompt>Unknown error</prompt> </catch> </form>
Event listeners can only be registered on Element
nodes, i.e. other Node
types are not addressable, and
cannot be registered for a specific group either, i.e. they are
always attached to the default group. The target phase and the
bubbling
phase are coupled during the registration. [VoiceXML
2.0] does not address namespaces in event types but uses the
notion of event categories. The event type
"connection.disconnect.hangup"
could be associated to
the event categories {"http://www.example.org/2003/voicexml",
"connection"}
and
{"http://www.example.org/2003/voicexml",
"connection.disconnect"}
.
In languages such as [HTML 4.01], [XHTML 1.0], or [SVG 1.0], event listeners are specified as attributes:
<circle id="myCircle" onactivate="myListener(evt)" cx="300" cy="225" r="100" fill="red"/>
Since only one attribute with the same name can appear on an
element, it is therefore not possible to register more than one
event listener on a single EventTarget
for
the event type. Also, event listeners can only be registered on
Element
nodes for the target phase and bubbling phase,
i.e. other Node
types and the capture phase are not
addressable with these languages. Event listeners cannot be
registered for a specific group either, i.e. they are always
attached to the default group.
In order to achieve compatibility with those languages,
implementors may view the setting of attributes which represent
event handlers as the creation and registration of an
EventListener
on the EventTarget
. The
value of useCapture
defaults to false
.
This EventListener
behaves in the same manner as any other EventListeners
which may be registered on the EventTarget
. If
the attribute representing the event listener is changed, this may
be viewed as the removal of the previously registered EventListener
and the registration of a new one. Furthermore, no specification is
made as to the order in which event attributes will receive the
event with regards to the other EventListeners
on the EventTarget
.
The interfaces described in this section are fundamental to DOM Level 3 Events and must always be supported by the implementation.
The Event
interface is used to provide contextual
information about an event to the listener processing the event. An
object which implements the Event
interface is passed
as the parameter to an EventListener
.
More specific context information is passed to event listeners by
deriving additional interfaces from Event
which
contain information directly relating to the type of event they
represent. These derived interfaces are also implemented by the
object passed to the event listener.
// Introduced in DOM Level 2: interface Event { // PhaseType const unsigned short CAPTURING_PHASE = 1; const unsigned short AT_TARGET = 2; const unsigned short BUBBLING_PHASE = 3; readonly attribute DOMString type; readonly attribute EventTarget target; readonly attribute EventTarget currentTarget; readonly attribute unsigned short eventPhase; readonly attribute boolean bubbles; readonly attribute boolean cancelable; readonly attribute DOMTimeStamp timeStamp; void stopPropagation(); void preventDefault(); void initEvent(in DOMString eventTypeArg, in boolean canBubbleArg, in boolean cancelableArg); // Introduced in DOM Level 3: readonly attribute DOMString namespaceURI; // Introduced in DOM Level 3: boolean isCustom(); // Introduced in DOM Level 3: void stopImmediatePropagation(); // Introduced in DOM Level 3: boolean isDefaultPrevented(); // Introduced in DOM Level 3: void initEventNS(in DOMString namespaceURIArg, in DOMString eventTypeArg, in boolean canBubbleArg, in boolean cancelableArg); };
An integer indicating which phase of the event flow is being processed as defined in DOM event flow.
AT_TARGET
BUBBLING_PHASE
CAPTURING_PHASE
bubbles
of type
boolean
, readonlytrue
, otherwise
the value is false
.cancelable
of type
boolean
, readonlytrue
, otherwise the value is
false
.currentTarget
of type
EventTarget
,
readonlyEventTarget
whose
EventListeners
are currently being processed. This is particularly useful during
the capture and bubbling phases. This attribute could contain the
target node or
a target ancestor when used with the DOM event flow.eventPhase
of type
unsigned short
, readonlynamespaceURI
of type
DOMString
, readonly, introduced in DOM Level 3null
if it is unspecified.initEvent
, this is always null
.target
of type EventTarget
,
readonlytimeStamp
of type
DOMTimeStamp
, readonlytimeStamp
may be not available for all events. When
not available, a value of 0
will be returned. Examples
of epoch time are the time of the system start or 0:0:0 UTC 1st
January 1970.type
of type DOMString
,
readonlyEvent.namespaceURI
is different from null
, this attribute represents a local name.initEvent
initEvent
method is used to
initialize the value of an Event
created through the
DocumentEvent.createEvent
method. This method may only be called before the
Event
has been dispatched via the EventTarget.dispatchEvent
method. If the method is called several times before invoking EventTarget.dispatchEvent
,
only the final invocation takes precedence. If called from a
subclass of Event
interface only the values specified
in this method are modified, all other attributes are left
unchanged.Event.type
attribute to eventTypeArg
, and
Event.localName
and Event.namespaceURI
to null
. To initialize an event with a local name and
namespace URI, use the initEventNS
method.
eventTypeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
initEventNS
introduced
in DOM Level 3initEventNS
method is used to
initialize the value of an Event
created through the
DocumentEvent
interface. This method may only be called before the
Event
has been dispatched via the
dispatchEvent
method, though it may be called multiple
times the event has been dispatched. If called multiple times the
final invocation takes precedence. If a call to
initEventNS
is made after one of the
Event
derived interfaces' init methods has been
called, only the values specified in the initEventNS
method are modified, all other attributes are left unchanged.Event.type
attribute to eventTypeArg
, and Event.namespaceURI
to namespaceURIArg
.
namespaceURIArg
of type
DOMString
null
if no
namespace.eventTypeArg
of type
DOMString
Event.type
).canBubbleArg
of type
boolean
cancelableArg
of type
boolean
isCustom
introduced in DOM Level 3false
, unless the event implements the CustomEvent
interface.
|
|
isDefaultPrevented
introduced in DOM Level 3true
if
the method preventDefault()
has been called for this
event, false
otherwise.
|
|
preventDefault
preventDefault
method is used to signify that the
event is to be canceled, meaning any default action normally taken
by the implementation as a result of the event will not occur (see
also Default actions
and cancelable events), and thus independently of event groups.
Calling this method for a non-cancelable event has no effect.
Note: This method does not stop the event propagation;
use stopPropagation
or
stopImmediatePropagation
for that effect.
stopImmediatePropagation
introduced in DOM Level 3stopPropagation
its effect is immediate (see Event propagation and
event groups). Once it has been called, further calls to that
method have no additional effect.
Note: This method does not prevent the default action
from being invoked; use preventDefault
for that
effect.
stopPropagation
currentTarget
have
been triggered (see Event propagation and
event groups). Once it has been called, further calls to that
method have no additional effect.
Note: This method does not prevent the default action
from being invoked; use preventDefault
for that
effect.
The EventTarget
interface is implemented by all the
objects which could be event targets in an
implementation which supports the Event flows. The interface allows
registration, removal or query of event listeners, and dispatch of
events to an event target.
When used with DOM event
flow, this interface is implemented by all target nodes and target
ancestors, i.e. all DOM Nodes
of the tree support this
interface when the implementation conforms to DOM Level 3 Events
and, therefore, this interface can be obtained by using
binding-specific casting methods on an instance of the
Node
interface.
Invoking multiple times addEventListener
or
addEventListenerNS
on the same
EventTarget
with the same parameters
(namespaceURI
, type
,
listener
, and useCapture
) is considered
to be a no-op and thus independently of the event group. They do
not cause the EventListener
to be called more than once and do not cause a change in the
triggering order. In order to guarantee that an event listener will
be added to the event target for the specified event group, one
needs to invoke removeEventListener
or
removeEventListenerNS
first.
// Introduced in DOM Level 2: interface EventTarget { void addEventListener(in DOMString type, in EventListener listener, in boolean useCapture); void removeEventListener(in DOMString type, in EventListener listener, in boolean useCapture); // Modified in DOM Level 3: boolean dispatchEvent(in Event evt) raises(EventException); // Introduced in DOM Level 3: void addEventListenerNS(in DOMString namespaceURI, in DOMString type, in EventListener listener, in boolean useCapture, in DOMObject evtGroup); // Introduced in DOM Level 3: void removeEventListenerNS(in DOMString namespaceURI, in DOMString type, in EventListener listener, in boolean useCapture); // Introduced in DOM Level 3: boolean willTriggerNS(in DOMString namespaceURI, in DOMString type); // Introduced in DOM Level 3: boolean hasEventListenerNS(in DOMString namespaceURI, in DOMString type); };
addEventListener
useCapture
parameter, on the capture phase of the DOM
event flow or its target and bubbling phases.
type
of type
DOMString
Event.type
associated with the event for which the user is registering.listener
of type EventListener
listener
parameter takes an object implemented
by the user which implements the EventListener
interface and contains the method to be called when the event
occurs.useCapture
of type
boolean
useCapture
indicates that the user wishes
to add the event listener for the capture phase only,
i.e. this event listener will not be triggered during the target and bubbling phases. If
false
, the event listener will only be triggered
during the target and bubbling phases.addEventListenerNS
introduced in DOM Level 3useCapture
parameter, on the capture phase of
the DOM event flow or its target and bubbling phases.
namespaceURI
of type
DOMString
Event.namespaceURI
associated with the event for which the user is registering.type
of type
DOMString
Event.type
associated with the event for which the user is registering.listener
of type EventListener
listener
parameter takes an object implemented
by the user which implements the EventListener
interface and contains the method to be called when the event
occurs.useCapture
of type
boolean
useCapture
indicates that the user wishes
to add the event listener for the capture phase only,
i.e. this event listener will not be triggered during the target and bubbling phases. If
false
, the event listener will only be triggered
during the target and bubbling phases.evtGroup
of type
DOMObject
EventListener
(see also Event
propagation and event groups). Use null
to attach
the event listener to the default group.dispatchEvent
modified in DOM Level 3EventTarget
object on which
dispatchEvent
is called.
evt
of type Event
|
Indicates whether any of the listeners which handled the event
called |
UNSPECIFIED_EVENT_TYPE_ERR: Raised if the DISPATCH_REQUEST_ERR: Raised if the NOT_SUPPORTED_ERR: Raised if the |
hasEventListenerNS
introduced in DOM Level 3EventTarget
contains an event listener
registered for the specified event type. This is useful for
determining at which nodes within a hierarchy altered handling of
specific event types has been introduced, but should not be used to
determine whether the specified event type triggers an event
listener (see willTriggerNS
).
namespaceURI
of type
DOMString
Event.namespaceURI
associated with the event.type
of type
DOMString
Event.type
associated with the event.
|
|
removeEventListener
removeEventListener
with arguments which do
not identify any currently registered EventListener
on the EventTarget
has no effect.
type
of type
DOMString
Event.type
for
which the user registered the event listener.listener
of type EventListener
EventListener
to be removed.useCapture
of type
boolean
EventListener
being removed was registered for the capture phase or not. If a
listener was registered twice, once for the capture phase and once
for the target and bubbling phases, each must be removed
separately. Removal of an event listener registered for the capture
phase does not affect the same event listener registered for the
target and bubbling phases, and vice versa.removeEventListenerNS
introduced in DOM Level 3removeEventListenerNS
with arguments which do
not identify any currently registered EventListener
on the EventTarget
has no effect.
namespaceURI
of type
DOMString
Event.namespaceURI
associated with the event for which the user registered the event
listener.type
of type
DOMString
Event.type
associated with the event for which the user registered the event
listener.listener
of type EventListener
EventListener
parameter indicates the EventListener
to be removed.useCapture
of type
boolean
EventListener
being removed was registered for the capture phase or not. If a
listener was registered twice, once for the capture phase and once
for the target and bubbling phases, each must be removed
separately. Removal of an event listener registered for the capture
phase does not affect the same event listener registered for the
target and bubbling phases, and vice versa.willTriggerNS
introduced in DOM Level 3EventTarget
or
one of its ancestors, will be triggered by the specified event type
during the dispatch of the event to this event target or one of its
descendants.
namespaceURI
of type
DOMString
Event.namespaceURI
associated with the event.type
of type
DOMString
Event.type
associated with the event.
|
|
The EventListener
interface is the primary way for
handling events. Users implement the EventListener
interface and register their event listener on an EventTarget
. The
users should also remove their EventListener
from its
EventTarget
after
they have completed using the listener.
Copying a Node
does not copy the event listeners
attached to it. Event listeners must be attached to the newly
created Node
afterwards if so desired. Therefore,
Nodes
are copied using Node.cloneNode
or
Range.cloneContents
, the EventListeners
attached to the source Nodes
are not attached to their
copies.
Moving a Node
does not affect the event listeners
attached to it. Therefore, when Nodes
are moved using
Document.adoptNode
, Node.appendChild
, or
Range.extractContents
, the EventListeners
attached to the moved Nodes
stay attached to them.
// Introduced in DOM Level 2: interface EventListener { void handleEvent(in Event evt); };
Event operations may throw an EventException
as specified in their method descriptions.
// Introduced in DOM Level 2: exception EventException { unsigned short code; }; // EventExceptionCode const unsigned short UNSPECIFIED_EVENT_TYPE_ERR = 0; // Introduced in DOM Level 3: const unsigned short DISPATCH_REQUEST_ERR = 1;
An integer indicating the type of error generated.
DISPATCH_REQUEST_ERR
, introduced
in DOM Level 3.Event
object is already
dispatched in the tree.UNSPECIFIED_EVENT_TYPE_ERR
Event.type
was not
specified by initializing the event before the method was called.
Specification of the Event.type
as
null
or an empty string will also trigger this
exception.In most cases, the events dispatched by the DOM Events
implementation are also created by the implementation. It is
however possible to simulate events such as mouse events by
creating the Event
objects and
dispatch them using the DOM Events implementation.
DOM Events provides two ways for creating Event
objects. An
application can either create Event
objects that are
known to the implementation, or create its own objects and have
them dispatched by the DOM Events implementation.
Creating Event
objects that are
known to the DOM Events implementation is done using DocumentEvent.createEvent
.
The application must then initialize the object by calling the
appropriate initialization method before invoking EventTarget.dispatchEvent
.
The Event
objects created
must be known by the DOM Events implementation otherwise an event
exception is thrown.
The DOM application might want to create its own Event
objects, in order
to change the default Event
implementation
provided by the DOM Events implementation or to generate new event
types with specific contextual information. In any case, the
application is responsible for creating and initializing the Event
object. The
application can then dispatch the event using the DOM Events
implementation by using EventTarget.dispatchEvent
.
However, the DOM Events implementation requires to have access
to two attributes in the Event
object in order
to accomplish the dispatch appropriately: Event.currentTarget
and Event.eventPhase
.
Those attributes are defined as readonly
in the Event
interface since
event listeners must not change them and it is the responsibility
of the DOM Events implementation to update them during the event
flow. Therefore, implementing the Event
interface when
creating its own events is not enough for an application since the
DOM Events implementation will not be able to update the current
phase and the current node during the dispatch, unless the event
object also implements the CustomEvent
interface to give access to the relevant attributes.
The DocumentEvent
interface provides a mechanism by
which the user can create an Event
object of a type
supported by the implementation. It is expected that the
DocumentEvent
interface will be implemented on the
same object which implements the Document
interface in
an implementation which supports the Event model.
// Introduced in DOM Level 2: interface DocumentEvent { Event createEvent(in DOMString eventType) raises(DOMException); // Introduced in DOM Level 3: boolean canDispatch(in DOMString namespaceURI, in DOMString type); };
canDispatch
introduced in DOM Level 3namespaceURI
of type
DOMString
Event.namespaceURI
of the event.type
of type
DOMString
Event.type
of the
event.
|
|
createEvent
eventType
of type
DOMString
eventType
parameter specifies the name of the
DOM Events interface to be supported by the created event object,
e.g. "Event"
, "MouseEvent"
,
"MutationEvent"
... If the Event
is to be
dispatched via the EventTarget.dispatchEvent
method the appropriate event init method must be called after
creation in order to initialize the Event
's values.UIEvent
would call DocumentEvent.createEvent
with the parameter "UIEvent"
. The UIEvent.initUIEventNS
method could then be called on the newly created UIEvent
object
to set the specific type of user interface event to be dispatched,
{"http://www.w3.org/2001/xml-events", "DOMActivate"}
for example, and set its context information, e.g. UIEvent.detail
in this example.createEvent
method is used in creating Event
s when it is
either inconvenient or unnecessary for the user to create an Event
themselves. In
cases where the implementation provided Event
is insufficient,
users may supply their own Event
implementations
for use with the EventTarget.dispatchEvent
method. However, the DOM implementation needs access to the
attributes Event.currentTarget
and Event.eventPhase
to propagate appropriately the event in the DOM tree. Therefore
users' Event
implementations
might need to support the CustomEvent
interface for that effect.
Note: For backward compatibility reason, "UIEvents",
"MouseEvents", "MutationEvents", and "HTMLEvents" feature names are
valid values for the parameter eventType
and represent
respectively the interfaces "UIEvent", "MouseEvent",
"MutationEvent", and "Event".
The newly created event object. |
|
NOT_SUPPORTED_ERR: Raised if the implementation does not support
the |
The CustomEvent
interface gives access to the
attributes Event.currentTarget
and Event.eventPhase
.
It is intended to be used by the DOM Events implementation to
access the underlying current target and event phase while
dispatching a custom Event
in the tree; it
is also intended to be implemented, and not used, by DOM
applications.
The methods contained in this interface are not intended to be
used by a DOM application, especially during the dispatch on the Event
object.
Changing the current target or the current phase may conduct into
unpredictable results of the event flow. The DOM Events
implementation should ensure that both methods return the
appropriate current target and phase before invoking each event
listener on the current target to protect DOM applications from
malicious event listeners.
Note: If this interface is supported by the event object,
Event.isCustom()
must return true
.
// Introduced in DOM Level 3: interface CustomEvent : Event { void setDispatchState(in EventTarget target, in unsigned short phase); boolean isPropagationStopped(); boolean isImmediatePropagationStopped(); };
isImmediatePropagationStopped
isImmediatePropagationStopped
method is used by the DOM Events implementation to know if the
method stopImmediatePropagation()
has been called for
this event. It returns true
if the method has been
called, false
otherwise.
|
|
isPropagationStopped
true
if
the method stopPropagation()
has been called for this
event, false
in any other cases.
|
|
setDispatchState
setDispatchState
method is
used by the DOM Events implementation to set the values of Event.currentTarget
and Event.eventPhase
.
It also reset the states of isPropagationStopped
and
isImmediatePropagationStopped
.
target
of type EventTarget
Event.currentTarget
attribute.phase
of type
unsigned short
Event.eventPhase
attribute.The DOM Event Model allows a DOM implementation to support multiple modules of events. The model has been designed to allow addition of new event modules as is required. The DOM will not attempt to define all possible events. For purposes of interoperability, the DOM will define a module of user interface events including lower level device dependent events, a module of UI logical events, and a module of document mutation events.
The User Interface event module contains basic event types associated with user interfaces.
The UIEvent
interface provides specific contextual
information associated with User Interface events.
Note: To create an instance of the UIEvent
interface, use the feature string "UIEvent" as the value of the
input parameter used with the DocumentEvent.createEvent
method.
// Introduced in DOM Level 2: interface UIEvent : Event { readonly attribute views::AbstractView view; readonly attribute long detail; void initUIEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg); // Introduced in DOM Level 3: void initUIEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg); };
initUIEvent
initUIEvent
method is used to
initialize the value of a UIEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
UIEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence.
typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
Event
's
AbstractView
.detailArg
of type
long
Event
's detail.initUIEventNS
introduced in DOM Level 3initUIEventNS
method is used
to initialize the value of a UIEvent
created using the
DocumentEvent.createEvent
method. This method may only be called before the
UIEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence.
namespaceURI
of type
DOMString
null
if the application
wish not to use namespaces.typeArg
of type
DOMString
type
attribute in the Event
interface).canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
Event
's
AbstractView
.detailArg
of type
long
Event
's detail.The User Interface event types are listed below. For a full
description of the semantics associated with these event types,
refer to the Complete list of event
types. A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "UIEvents"
and
"3.0"
(respectively) to determine whether or not the
DOM Level 3 User Interface event types are supported by the
implementation. In order to fully support this module, an
implementation must also support the "Events"
feature
defined in this specification and the "Views"
feature
defined in the DOM Level 2 Views specification [DOM Level 2
Views]. For additional information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core]. The DOM Level 3
User Interface Events module is built on top of the DOM Level 2
User Interface Events [DOM Level 2 Events] module, i.e. a
DOM Level 3 User Interface Events implementation where
hasFeature("UIEvents", "3.0")
returns
true
must also return true
when the
version
number is "2.0"
, ""
or, null
.
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events",
"DOMActivate" |
UIEvent.view is
in use. |
"http://www.w3.org/2001/xml-events", "DOMFocusIn" |
(same as above) |
"http://www.w3.org/2001/xml-events",
"DOMFocusOut" |
(same as above) |
The text event module originates from the [HTML 4.01]
onkeypress
attribute. Unlike this attribute, the event
type {"http://www.w3.org/2001/xml-events",
"textInput"}
applies only to characters and is specifically
designed for use with text input devices.
The TextEvent
interface provides specific
contextual information associated with Text Events.
Note: To create an instance of the TextEvent
interface, use the feature string "TextEvent" as the value of the
input parameter used with the DocumentEvent.createEvent
method.
// Introduced in DOM Level 3: interface TextEvent : UIEvent { readonly attribute DOMString data; void initTextEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString dataArg); void initTextEventNS(in DOMString namespaceURI, in DOMString type, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString dataArg); };
data
of type
DOMString
, readonlydata
holds the value of the characters generated
by the character device. This may be a single Unicode character or
it may be a string.initTextEvent
initTextEvent
method is used
to initialize the value of a TextEvent
created using
the DocumentEvent.createEvent
method. This method may only be called before the
TextEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence. This method has no effect if called after the event has
been dispatched.
typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
TextEvent
's view.dataArg
of type
DOMString
TextEvent
's data
attributeinitTextEventNS
initTextEventNS
method is used
to initialize the value of a TextEvent
created using
the DocumentEvent.createEvent
method. This method may only be called before the
TextEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence. This method has no effect if called after the event has
been dispatched.
namespaceURI
of type
DOMString
null
if the
applications wish to have no namespace.type
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
TextEvent
's view.dataArg
of type
DOMString
TextEvent
's data
attributeThe text event type is listed below. For a full description of
the semantics associated with this event type, refer to the Complete list of
event types. A DOM application may use the
hasFeature(feature, version)
method of the
DOMImplementation
interface with parameter values
"TextEvents"
and "3.0"
(respectively) to
determine whether or not the Text event module is supported by the
implementation. In order to fully support this module, an
implementation must also support the "UIEvents"
feature defined in this specification. For additional information
about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core].
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events", "textInput" |
UIEvent.view and
TextEvent.data
are in use. |
The Mouse event module originates from the [HTML 4.01]
onclick
, ondblclick
,
onmousedown
, onmouseup
,
onmouseover
, onmousemove
, and
onmouseout
attributes. This event module is
specifically designed for use with pointing input devices, such a
mouse.
The MouseEvent
interface provides specific
contextual information associated with Mouse events.
In the case of nested elements mouse events are always targeted at the most deeply nested element. Ancestors of the targeted element may use bubbling to obtain notification of mouse events which occur within its descendent elements.
Note: To create an instance of the
MouseEvent
interface, use the feature string
"MouseEvent" as the value of the input parameter used with the DocumentEvent.createEvent
method.
// Introduced in DOM Level 2: interface MouseEvent : UIEvent { readonly attribute long screenX; readonly attribute long screenY; readonly attribute long clientX; readonly attribute long clientY; readonly attribute boolean ctrlKey; readonly attribute boolean shiftKey; readonly attribute boolean altKey; readonly attribute boolean metaKey; readonly attribute unsigned short button; readonly attribute EventTarget relatedTarget; void initMouseEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg, in long screenXArg, in long screenYArg, in long clientXArg, in long clientYArg, in boolean ctrlKeyArg, in boolean altKeyArg, in boolean shiftKeyArg, in boolean metaKeyArg, in unsigned short buttonArg, in EventTarget relatedTargetArg); // Introduced in DOM Level 3: void initMouseEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg, in long screenXArg, in long screenYArg, in long clientXArg, in long clientYArg, in boolean ctrlKeyArg, in boolean altKeyArg, in boolean shiftKeyArg, in boolean metaKeyArg, in unsigned short buttonArg, in EventTarget relatedTargetArg, in boolean altGraphKeyArg); // Introduced in DOM Level 3: readonly attribute boolean altGraphKey; };
altGraphKey
of type
boolean
, readonly, introduced in DOM Level 3true
if the alt-graph (Alt Gr) key modifier is
activated.
Note: Some operating systems simulate the alt-graph key modifier with the combinaison of alt and ctrl key modifiers. Implementations are encouraged to use this modifier instead.
altKey
of type
boolean
, readonlytrue
if the alt (alternative) key modifier is
activated.button
of type
unsigned short
, readonlybutton
is used to indicate which mouse
button changed state. 0
indicates the normal (in
general on the left or the one button on Macintosh mice, used to
activate a button or select text) button of the mouse.
2
indicates the contextual property (in general on the
right, used to display a context menu) button of the mouse if
present. 1
indicates the extra (in general in the
middle and often combined with the mouse wheel) button. Some mice
may provide or simulate more buttons and values higher than
2
could be used to represent such buttons.clientX
of type
long
, readonlyclientY
of type
long
, readonlyctrlKey
of type
boolean
, readonlytrue
if the control (Ctrl) key modifier is
activated.metaKey
of type
boolean
, readonlytrue
if the meta (Meta) key modifier is activated.
Note: The Command key modifier on Macintosh system must be represented using this key modifier.
relatedTarget
of type
EventTarget
,
readonlyEventTarget
related to a UI event. Currently this attribute is used with the
mouseover event to indicate the EventTarget
which
the pointing device exited and with the mouseout event to indicate
the EventTarget
which
the pointing device entered.screenX
of type
long
, readonlyscreenY
of type
long
, readonlyshiftKey
of type
boolean
, readonlytrue
if the shift (Shift) key modifier is
activated.initMouseEvent
initMouseEvent
method is used
to initialize the value of a MouseEvent
created using
the DocumentEvent.createEvent
method. This method may only be called before the
MouseEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times before being
dispatched. If called multiple times, the final invocation takes
precedence.
typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
Event
's view.detailArg
of type
long
Event
's mouse click
count.screenXArg
of type
long
Event
's screen x
coordinatescreenYArg
of type
long
Event
's screen y
coordinateclientXArg
of type
long
Event
's client x
coordinateclientYArg
of type
long
Event
's client y
coordinatectrlKeyArg
of type
boolean
Event
.altKeyArg
of type
boolean
Event
.shiftKeyArg
of type
boolean
Event
.metaKeyArg
of type
boolean
Event
.buttonArg
of type
unsigned short
Event
's mouse
button.relatedTargetArg
of type EventTarget
Event
's related EventTarget
.initMouseEventNS
introduced in DOM Level 3initMouseEventNS
method is
used to initialize the value of a MouseEvent
created
using the DocumentEvent.createEvent
interface. This method may only be called before the
MouseEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence.
namespaceURI
of type
DOMString
null
if the application
wish to have no namespace.typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
Event
's
AbstractView
.detailArg
of type
long
Event
's mouse click
count.screenXArg
of type
long
Event
's screen x
coordinatescreenYArg
of type
long
Event
's screen y
coordinateclientXArg
of type
long
Event
's client x
coordinateclientYArg
of type
long
Event
's client y
coordinatectrlKeyArg
of type
boolean
Event
.altKeyArg
of type
boolean
Event
.shiftKeyArg
of type
boolean
Event
.metaKeyArg
of type
boolean
Event
.buttonArg
of type
unsigned short
Event
's mouse
button.relatedTargetArg
of type EventTarget
Event
's related EventTarget
.altGraphKeyArg
of type
boolean
Event
.The Mouse event types are listed below. For a full description
of the semantics associated with these event types, refer to the Complete list of
event types. In the case of nested elements, mouse event types
are always targeted at the most deeply nested element. Ancestors of
the targeted element may use bubbling to obtain notification of
mouse events which occur within its descendent elements. A DOM
application may use the hasFeature(feature, version)
method of the DOMImplementation
interface with
parameter values "MouseEvents"
and "3.0"
(respectively) to determine whether or not the Mouse event module
is supported by the implementation. In order to fully support this
module, an implementation must also support the "UIEvents" feature
defined in this specification. For additional information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core]. The DOM Level 3
Mouse Events module is built on top of the DOM Level 2 Mouse Events
[DOM
Level 2 Events] module, i.e. a DOM Level 3 Mouse Events
implementation where hasFeature("MouseEvents", "3.0")
returns true
must also return true
when
the version
number is "2.0"
,
""
or, null
.
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events", "click" |
MouseEvent.screenX ,
MouseEvent.screenY ,
MouseEvent.clientX ,
MouseEvent.clientY ,
MouseEvent.altKey ,
MouseEvent.ctrlKey ,
MouseEvent.shiftKey ,
MouseEvent.metaKey ,
MouseEvent.altGraphKey ,
MouseEvent.button ,
and UIEvent.view are
in use. The UIEvent.detail
attribute indicates the number of consecutive clicks of a pointing
device button during a user action. The attribute value is
1 when the user begins this action and increments by
1 for each click. The notion of consecutive clicks
depends on the environment configuration. For example, a "double
click" will not happen if there is a long delay between the two
clicks, even if the pointing device did not move. |
"http://www.w3.org/2001/xml-events", "mousedown" |
MouseEvent.screenX ,
MouseEvent.screenY ,
MouseEvent.clientX ,
MouseEvent.clientY ,
MouseEvent.altKey ,
MouseEvent.ctrlKey ,
MouseEvent.shiftKey ,
MouseEvent.metaKey ,
MouseEvent.altGraphKey ,
MouseEvent.button ,
and UIEvent.view are
in use. The UIEvent.detail
attribute indicates the number of consecutive clicks, incremented
by one, of a pointing device button during a user action. For
example, if no click happened before the mousedown, UIEvent.detail
will contain the value 1 . |
"http://www.w3.org/2001/xml-events", "mouseup" |
MouseEvent.screenX ,
MouseEvent.screenY ,
MouseEvent.clientX ,
MouseEvent.clientY ,
MouseEvent.altKey ,
MouseEvent.ctrlKey ,
MouseEvent.shiftKey ,
MouseEvent.metaKey ,
MouseEvent.altGraphKey ,
MouseEvent.button ,
and UIEvent.view are
in use. The UIEvent.detail
attribute indicates the number of consecutive clicks, incremented
by one, of a pointing device button during a user action. For
example, if no click happened before the mouseup, UIEvent.detail
will contain the value 1 . However, if no click is
generated after the mouseup, UIEvent.detail
contains the value 0 , indicating that no click is
occurring. |
"http://www.w3.org/2001/xml-events", "mouseover" |
MouseEvent.screenX ,
MouseEvent.screenY ,
MouseEvent.clientX ,
MouseEvent.clientY ,
MouseEvent.altKey ,
MouseEvent.ctrlKey ,
MouseEvent.shiftKey ,
MouseEvent.metaKey ,
MouseEvent.altGraphKey ,
and UIEvent.view are
in use. MouseEvent.relatedTarget
indicates the event
target a pointing device is exiting. |
"http://www.w3.org/2001/xml-events", "mousemove" |
MouseEvent.screenX ,
MouseEvent.screenY ,
MouseEvent.clientX ,
MouseEvent.clientY ,
MouseEvent.altKey ,
MouseEvent.ctrlKey ,
MouseEvent.shiftKey ,
MouseEvent.metaKey ,
MouseEvent.altGraphKey ,
and UIEvent.view are
in use. |
"http://www.w3.org/2001/xml-events", "mouseout" |
MouseEvent.screenX ,
MouseEvent.screenY ,
MouseEvent.clientX ,
MouseEvent.clientY ,
MouseEvent.altKey ,
MouseEvent.ctrlKey ,
MouseEvent.shiftKey ,
MouseEvent.metaKey ,
MouseEvent.altGraphKey ,
and UIEvent.view are
in use. MouseEvent.relatedTarget
indicates the event
target a pointing device is entering. |
As an example, a "double-click" on a mouse device will produce
the following events (the value of UIEvent.detail
is indicated in parenthesis):
"http://www.w3.org/2001/xml-events", "mousedown"
}
(1
)"http://www.w3.org/2001/xml-events", "mouseup"
}
(1
)"http://www.w3.org/2001/xml-events", "click"
}
(1
)"http://www.w3.org/2001/xml-events", "mousedown"
}
(2
)"http://www.w3.org/2001/xml-events", "mouseup"
}
(2
)"http://www.w3.org/2001/xml-events", "click"
}
(2
)Keyboard events are device dependent, i.e. they rely on the capabilities of the input devices and how they are mapped in the operating systems. It is therefore highly recommended to rely on Text events when dealing with characters.
The KeyboardEvent
interface provides specific
contextual information associated with keyboard devices. Each
keyboard event reference a key using an identifier.
Each modifier attribute (ctrlKey
,
shiftKey
, altKey
, metaKey
,
and altGraphKey
) is activated when the key modifier is
being pressed down or maintained pressed, i.e. the modifier
attribute is not in use when the key modifier is being
released.
Note: To create an instance of the
KeyboardEvent
interface, use the feature string
"KeyboardEvent" as the value of the input parameter used with the
DocumentEvent.createEvent
method.
// Introduced in DOM Level 3: interface KeyboardEvent : UIEvent { // KeyLocationCode const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00; const unsigned long DOM_KEY_LOCATION_LEFT = 0x01; const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02; const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03; const unsigned long DOM_KEY_LOCATION_UNKNOWN = 0x04; readonly attribute DOMString keyIdentifier; readonly attribute unsigned long keyLocation; readonly attribute boolean ctrlKey; readonly attribute boolean shiftKey; readonly attribute boolean altKey; readonly attribute boolean metaKey; readonly attribute boolean altGraphKey; void initKeyboardEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString keyIdentifierArg, in unsigned long keyLocationArg, in boolean ctrlKeyArg, in boolean shiftKeyArg, in boolean altKeyArg, in boolean metaKeyArg, in boolean altGraphKeyArg); void initKeyboardEventNS(in DOMString namespaceURI, in DOMString type, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString keyIdentifierArg, in unsigned long keyLocationArg, in boolean ctrlKeyArg, in boolean shiftKeyArg, in boolean altKeyArg, in boolean metaKeyArg, in boolean altGraphKeyArg); };
DOM_KEY_LOCATION_LEFT
DOM_KEY_LOCATION_NUMPAD
DOM_KEY_LOCATION_RIGHT
DOM_KEY_LOCATION_STANDARD
DOM_KEY_LOCATION_UNKNOWN
Note: In case a DOM implementation wishes to provide new
location information, all values above the value of this constant
can be used for that effect and generic DOM applications should
consider values above the value of this constant as being
equivalent to DOM_KEY_LOCATION_UNKNOWN
.
altGraphKey
of type
boolean
, readonlytrue
if the alt-graph (Alt Gr) key modifier is
activated.
Note: Some operating systems simulate the alt-graph key modifier with the combinaison of alt and ctrl key modifiers. Implementations are encouraged to use this modifier instead.
altKey
of type
boolean
, readonlytrue
if the alt (alternative) key modifier is
activated.ctrlKey
of type
boolean
, readonlytrue
if the control (Ctrl) key modifier is
activated.keyIdentifier
of
type DOMString
, readonlykeyIdentifier
holds the identifier of the key. For
a list of possible values, refer to Key identifiers for keyboard events..
Note: Implementations that are unable to identify a key
must use the key identifier "Unidentified"
.
keyLocation
of type
unsigned long
, readonlykeyLocation
attribute contains an indication
of the location of they key on the device.metaKey
of type
boolean
, readonlytrue
if the meta (Meta) key modifier is activated.
Note: The Command key modifier on Macintosh system must be represented using this key modifier.
shiftKey
of type
boolean
, readonlytrue
if the shift (Shift) key modifier is
activated.initKeyboardEvent
initKeyboardEvent
method is
used to initialize the value of a KeyboardEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
KeyboardEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times before being
dispatched if necessary. If called multiple times, the final
invocation takes precedence. This method has no effect if called
after the event has been dispatched.
typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
KeyboardEvent
's
AbstractView
.keyIdentifierArg
of type
DOMString
KeyboardEvent
's
keyIdentifier
attribute.keyLocationArg
of type
unsigned long
KeyboardEvent
's
keyLocation
attribute.ctrlKeyArg
of type
boolean
KeyboardEvent
's ctrlKey
attribute.shiftKeyArg
of type
boolean
KeyboardEvent
's
shiftKey
attribute.altKeyArg
of type
boolean
KeyboardEvent
's altKey
attribute.metaKeyArg
of type
boolean
KeyboardEvent
's metaKey
attribute.altGraphKeyArg
of type
boolean
KeyboardEvent
's
altGraphKey
attribute.initKeyboardEventNS
initKeyboardEventNS
method is
used to initialize the value of a KeyboardEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
KeyboardEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence. This method has no effect if called after the event has
been dispatched.
namespaceURI
of type
DOMString
null
if the
applications wish to have no namespace.type
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
viewArg
of type
views::AbstractView
KeyboardEvent
's
AbstractView
.keyIdentifierArg
of type
DOMString
KeyboardEvent
's
keyIdentifier
attributekeyLocationArg
of type
unsigned long
KeyboardEvent
's
keyLocation
attribute.ctrlKeyArg
of type
boolean
KeyboardEvent
's ctrlKey
attribute.shiftKeyArg
of type
boolean
KeyboardEvent
's
shiftKey
attribute.altKeyArg
of type
boolean
KeyboardEvent
's altKey
attribute.metaKeyArg
of type
boolean
KeyboardEvent
's metaKey
attribute.altGraphKeyArg
of type
boolean
KeyboardEvent
's
altGraphKey
attribute.Depending on the character device generation system, keyboard events may or may not be generated.
The keyboard event types are listed below. For a full
description of the semantics associated with these event types,
refer to the Complete list of event
types. A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "KeyboardEvents"
and
"3.0"
(respectively) to determine whether or not the
Keyboard event module is supported by the implementation. In order
to fully support this module, an implementation must also support
the "UIEvents"
feature defined in this specification.
For additional information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core].
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events", "keydown" |
UIEvent.view , KeyboardEvent.keyIdentifier ,
KeyboardEvent.location , KeyboardEvent.altKey ,
KeyboardEvent.altGraphKey ,
KeyboardEvent.shiftKey ,
KeyboardEvent.ctrlKey ,
and KeyboardEvent.metaKey
are in use. |
"http://www.w3.org/2001/xml-events", "keyup" |
UIEvent.view , KeyboardEvent.keyIdentifier ,
and KeyboardEvent.location are in use. KeyboardEvent.altKey ,
KeyboardEvent.altGraphKey ,
KeyboardEvent.shiftKey ,
KeyboardEvent.ctrlKey ,
and KeyboardEvent.metaKey
are in use unless the Keyboard.keyIdentifier
corresponds to the key modifier itself. |
The mutation and mutation name event modules are designed to allow notification of any changes to the structure of a document, including attribute, text, or name modifications. It may be noted that none of the event types associated with the modules are designated as cancelable. This stems from the fact that it is very difficult to make use of existing DOM interfaces which cause document modifications if any change to the document might or might not take place due to cancelation of the resulted event. Although this is still a desired capability, it was decided that it would be better left until the addition of transactions into the DOM.
Many single modifications of the tree can cause multiple mutation events to be dispatched. Rather than attempt to specify the ordering of mutation events due to every possible modification of the tree, the ordering of these events is left to the implementation.
The MutationEvent
interface provides specific
contextual information associated with Mutation events.
Note: To create an instance of the
MutationEvent
interface, use the feature string
"MutationEvent"
as the value of the input parameter
used with the DocumentEvent.createEvent
method.
// Introduced in DOM Level 2: interface MutationEvent : Event { // attrChangeType const unsigned short MODIFICATION = 1; const unsigned short ADDITION = 2; const unsigned short REMOVAL = 3; readonly attribute Node relatedNode; readonly attribute DOMString prevValue; readonly attribute DOMString newValue; readonly attribute DOMString attrName; readonly attribute unsigned short attrChange; void initMutationEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevValueArg, in DOMString newValueArg, in DOMString attrNameArg, in unsigned short attrChangeArg); // Introduced in DOM Level 3: void initMutationEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevValueArg, in DOMString newValueArg, in DOMString attrNameArg, in unsigned short attrChangeArg); };
An integer indicating in which way the Attr
was
changed.
ADDITION
Attr
was just added.MODIFICATION
Attr
was modified in place.REMOVAL
Attr
was just removed.attrChange
of type
unsigned short
, readonlyattrChange
indicates the type of change which
triggered the DOMAttrModified event. The values can be
MODIFICATION
, ADDITION
, or
REMOVAL
.attrName
of type
DOMString
, readonlyattrName
indicates the name of the changed
Attr
node in a DOMAttrModified event.newValue
of type
DOMString
, readonlynewValue
indicates the new value of the
Attr
node in DOMAttrModified events, and of the
CharacterData
node in DOMCharacterDataModified
events.prevValue
of type
DOMString
, readonlyprevValue
indicates the previous value of the
Attr
node in DOMAttrModified events, and of the
CharacterData
node in DOMCharacterDataModified
events.relatedNode
of type
Node
, readonlyrelatedNode
is used to identify a secondary node
related to a mutation event. For example, if a mutation event is
dispatched to a node indicating that its parent has changed, the
relatedNode
is the changed parent. If an event is
instead dispatched to a subtree indicating a node was changed
within it, the relatedNode
is the changed node. In the
case of the DOMAttrModified
event it indicates the
Attr
node which was modified, added, or removed.initMutationEvent
initMutationEvent
method is
used to initialize the value of a MutationEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
MutationEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times before being
dispatched if necessary. If called multiple times, the final
invocation takes precedence.
typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
relatedNodeArg
of type
Node
Event
's related
Node.prevValueArg
of type
DOMString
Event
's
prevValue
attribute. This value may be null.newValueArg
of type
DOMString
Event
's
newValue
attribute. This value may be null.attrNameArg
of type
DOMString
Event
's
attrName
attribute. This value may be null.attrChangeArg
of type
unsigned short
Event
's
attrChange
attribute.initMutationEventNS
introduced in DOM Level 3initMutationEventNS
method is
used to initialize the value of a MutationEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
MutationEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence.
namespaceURI
of type
DOMString
null
if the application
wish to have no namespace.typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
relatedNodeArg
of type
Node
Event
's related
Node.prevValueArg
of type
DOMString
Event
's
prevValue
attribute. This value may be null.newValueArg
of type
DOMString
Event
's
newValue
attribute. This value may be null.attrNameArg
of type
DOMString
Event
's
attrName
attribute. This value may be null.attrChangeArg
of type
unsigned short
Event
's
attrChange
attribute.The mutation event types are listed below. For a full
description of the semantics associated with these event types,
refer to the Complete list of event
types. A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "MutationEvents"
and
"3.0"
(respectively) to determine whether or not the
MutationEvent
is supported by the implementation. In order to fully support this
module, an implementation must also support the
"Events"
feature defined in this specification. For
additional information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core]. This MutationEvent
interface is built on top of the DOM Level 2 Mutation Events [DOM
Level 2 Events] module, i.e. a DOM Level 3 MutationEvent
interface implementation where
hasFeature("MutationEvents","3.0")
returns
true
must also return true
when the
version
number is "2.0"
, ""
or, null
.
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events",
"DOMSubtreeModified" |
None |
"http://www.w3.org/2001/xml-events",
"DOMNodeInserted" |
MutationEvent.relatedNode
holds the parent node of the node being inserted. |
"http://www.w3.org/2001/xml-events",
"DOMNodeRemoved" |
MutationEvent.relatedNode
holds the parent node of the node being removed. |
"http://www.w3.org/2001/xml-events",
"DOMNodeRemovedFromDocument" |
None |
"http://www.w3.org/2001/xml-events",
"DOMNodeInsertedIntoDocument" |
None |
"http://www.w3.org/2001/xml-events",
"DOMAttrModified" |
MutationEvent.attrName
is in use. The value of MutationEvent.relatedNode
indicates the Attr node whose value has been affected.
The value of MutationEvent.attrChange
indicates whether the Attr was modified, added, or
removed. If the Attr node is being added, MutationEvent.newValue
is in use. If the Attr node is being removed, MutationEvent.prevValue
is in value. If the Attr node is being modified, MutationEvent.newValue
and MutationEvent.prevValue
are in use. |
"http://www.w3.org/2001/xml-events",
"DOMCharacterDataModified" |
MutationEvent.prevValue ,
and MutationEvent.newValue
are in use. |
The MutationNameEvent
interface provides specific
contextual information associated with Mutation name event
types.
Note: To create an instance of the
MutationNameEvent
interface, use the feature string
"MutationNameEvent" as the value of the input parameter used with
the createEvent
method of the DocumentEvent
interface.
// Introduced in DOM Level 3: interface MutationNameEvent : MutationEvent { readonly attribute DOMString prevNamespaceURI; readonly attribute DOMString prevNodeName; // Introduced in DOM Level 3: void initMutationNameEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevNamespaceURI, in DOMString prevNodeName); // Introduced in DOM Level 3: void initMutationNameEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevNamespaceURI, in DOMString prevNodeName); };
prevNamespaceURI
of type DOMString
, readonlyrelatedNode
's
namespaceURI
.prevNodeName
of
type DOMString
, readonlyrelatedNode
's
nodeName
.initMutationNameEvent
introduced in DOM Level 3initMutationNameEvent
method
is used to initialize the value of a MutationNameEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
MutationNameEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence.
typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
relatedNodeArg
of type
Node
Event
's related
Node
.prevNamespaceURI
of type
DOMString
namespaceURI
of the related
Node
. This value may be null.prevNodeName
of type
DOMString
nodeName
of the related
Node
.initMutationNameEventNS
introduced in DOM Level 3initMutationNameEventNS
method
is used to initialize the value of a MutationNameEvent
created using the DocumentEvent.createEvent
method. This method may only be called before the
MutationNameEvent
has been dispatched via the EventTarget.dispatchEvent
method, though it may be called multiple times during that phase if
necessary. If called multiple times, the final invocation takes
precedence.
namespaceURI
of type
DOMString
null
if the application
wish to have no namespace.typeArg
of type
DOMString
canBubbleArg
of type
boolean
cancelableArg
of type
boolean
relatedNodeArg
of type
Node
Event
's related
Node
.prevNamespaceURI
of type
DOMString
namespaceURI
of the related
Node
. This value may be null.prevNodeName
of type
DOMString
nodeName
of the related
Node
.The mutation name event types are listed below. For a full
description of the semantics associated with these event types,
refer to the Complete list of event
types. A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "MutationNameEvents" and "3.0"
(respectively) to determine whether or not the MutationNameEvent
is supported by the implementation. In order to fully support this
module, an implementation must also support the
"MutationEvents"
feature defined in this specification
and the "Core"
feature defined in the DOM Level 3 Core
specification [DOM Level 3 Core]. For additional
information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core].
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events",
"DOMElementNameChanged" |
MutationNameEvent.prevNamespaceURI ,
and MutationNameEvent.prevNodeName
are in use. |
"http://www.w3.org/2001/xml-events",
"DOMAttributeNameChanged" |
MutationNameEvent.prevNamespaceURI ,
and MutationNameEvent.prevNodeName
are in use. The value of MutationEvent.relatedNode
contains the renamed Attr node. |
This event module contains basic event types associated with document manipulation.
A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "BasicEvents"
and
"3.0"
(respectively) to determine whether or not the
basic event module is supported by the implementation. In order to
fully support this module, an implementation must also support the
"Events"
feature defined in this specification. For
additional information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core].
The basic event types are listed below. For a full description of the semantics associated with these event types, refer to the Complete list of event types.
The event types {"http://www.w3.org/2001/xml-events",
"resize"}
and {"http://www.w3.org/2001/xml-events",
"scroll"}
implement the UIEvent
interface.
All other HTML event types implement at least the basic Event
interface.
However, they may be generated from a user interface; in that case,
the event objects also implements the UIEvent
interface and
UIEvent.view
is
in use.
Event type | Context information |
---|---|
"http://www.w3.org/2001/xml-events", "load" |
UIEvent.view may
be in use. |
"http://www.w3.org/2001/xml-events", "unload" |
(same as above) |
"http://www.w3.org/2001/xml-events", "abort" |
(same as above) |
"http://www.w3.org/2001/xml-events", "error" |
(same as above) |
"http://www.w3.org/2001/xml-events", "select" |
(same as above) |
"http://www.w3.org/2001/xml-events", "change" |
(same as above) |
"http://www.w3.org/2001/xml-events", "submit" |
(same as above) |
"http://www.w3.org/2001/xml-events", "reset" |
(same as above) |
"http://www.w3.org/2001/xml-events", "resize" |
UIEvent.view is
in use. |
"http://www.w3.org/2001/xml-events", "scroll" |
UIEvent.view is
in use. |
The HTML event module is composed of events listed in [HTML 4.01]
and additional events which are supported in DOM Level 0 browsers.
It refines the semantics and scope of the basic event types and
provides two new event types. This event module is only applicable
if the Document
supports the [DOM Level 2
HTML] specification. Use Node.isSupported(feature,
version)
with the parameter values "HTML" and "2.0"
(respectively) to determine whether or not the
Document
node supported the HTML module.
A DOM application may use the hasFeature(feature,
version)
method of the DOMImplementation
interface with parameter values "HTMLEvents"
and
"3.0"
(respectively) to determine whether or not the
HTML event module is supported by the implementation. In order to
fully support this module, an implementation must also support the
"BasicEvents"
feature defined in this specification
and the "HTML"
feature defined in [DOM Level 2
HTML]. For additional information about
conformance, please see the DOM Level 3 Core
specification [DOM Level 3 Core]. The DOM Level 3
HTML Events module is built on top of the DOM Level 2 HTML Events
[DOM
Level 2 Events] module, i.e. a DOM Level 3 HTML Events
implementation where hasFeature("HTMLEvents", "3.0")
returns true
must also return true
when
the version
number is "2.0"
,
""
or, null
.
Event type | Description | Target node |
---|---|---|
"http://www.w3.org/2001/xml-events", "load" |
The DOM implementation finishes loading all content within the BODY element, all frames within a FRAMESET, or any resource linked from the document. |
HTMLBodyElement , HTMLFrameSetElement ,
HTMLObjectElement , HTMLLinkElement ,
HTMLMetaElement , HTMLScriptElement ,
HTMLFrameElement , HTMLIFrameElement ,
HTMLImageElement |
"http://www.w3.org/2001/xml-events", "unload" |
The DOM implementation removes a document from a window or frame. This event is valid for BODY and FRAMESET elements. |
HTMLBodyElement , HTMLFrameSetElement
|
"http://www.w3.org/2001/xml-events", "abort" |
The page loading is stopped before an image has been allowed to completely load. This event applies to OBJECT elements. |
HTMLObjectElement |
"http://www.w3.org/2001/xml-events", "error" |
An image does not load properly or when an error occurs during script execution. This event is valid for OBJECT elements, BODY elements, and FRAMESET element. |
HTMLObjectElement , HTMLBodyElement ,
HTMLFrameSetElement |
"http://www.w3.org/2001/xml-events", "select" |
A user selects some text in a text field either via the user interface or via attributes defined in [DOM Level 2 HTML]. This event is valid for INPUT and TEXTAREA elements. |
HTMLInputElement , HTMLTextAreaElement
|
"http://www.w3.org/2001/xml-events", "change" |
A control loses the input
focus and its value has been modified since gaining focus. This
event can occur either via a user interface manipulation or the
focus() methods and the attributes defined in [DOM
Level 2 HTML]. This event is valid for INPUT, SELECT, and
TEXTAREA element. |
HTMLInputElement , HTMLSelectElement ,
HTMLTextAreaElement |
"http://www.w3.org/2001/xml-events", "submit" |
A form is submitted either
via a button. This event only applies to the FORM element. Note
that the HTMLFormElement.submit() method defined in
[DOM
Level 2 HTML] does not fire this event type. |
HTMLFormElement |
"http://www.w3.org/2001/xml-events", "reset" |
A form is reset either via
a button, or the HTMLFormElement.reset() method
defined in [DOM Level 2 HTML]. This event only
applies to the FORM element. |
HTMLFormElement |
"http://www.w3.org/2001/xml-events", "resize" |
A document view is resized. | HTMLDocument
|
"http://www.w3.org/2001/xml-events", "scroll" |
A document view is scrolled. | HTMLDocument
|
The following new event types are defined:
Event type | Description | Bubbling phase | Cancelable | Target node | DOM interface |
---|---|---|---|---|---|
"http://www.w3.org/2001/xml-events", "focus" |
An element receives focus
either via a pointing device, the focus() methods
defined in [DOM Level 2 HTML], or by tabbing
navigation. This event is only valid for the following elements: A,
AREA, LABEL, INPUT, SELECT, TEXTAREA, and BUTTON. This event type
is dispatched after the event type
{"http://www.w3.org/2001/xml-events",
"DOMFocusIn" }. |
No | No |
HTMLAnchorElement , HTMLAreaElement ,
HTMLLabelElement , HTMLInputElement ,
HTMLSelectElement , HTMLtextAreaElement ,
HTMLButtonElement . |
Event |
"http://www.w3.org/2001/xml-events", "blur" |
An element loses focus
either via a pointing device, the blur() methods
defined in [DOM Level 2 HTML], or by tabbing
navigation. This event is only valid for the following elements: A,
AREA, LABEL, INPUT, SELECT, TEXTAREA, and BUTTON. This event type
is dispatched after the event type
{"http://www.w3.org/2001/xml-events",
"DOMFocusOut" }. |
No | No |
HTMLAnchorElement , HTMLAreaElement ,
HTMLLabelElement , HTMLInputElement ,
HTMLSelectElement , HTMLtextAreaElement ,
HTMLButtonElement . |
Event |
The event types {"http://www.w3.org/2001/xml-events",
"focus"}
and {"http://www.w3.org/2001/xml-events",
"blur"}
may be generated from a user interface; in that
case, the event objects also implements the UIEvent
interface and
UIEvent.view
is
in use.
The concept of activation
({"http://www.w3.org/2001/xml-events", "DOMActivate"}
)
was introduced in [DOM Level 2 Events] to separate
generic actions from the devices used to activate them. For
example, an hyperlink can be activated using a mouse or a keyboard,
and the activation will force the user agent to follow the link. It
is expected that the action of following the link is done using a
default action attached to the hyperlink element. In such case, the
default action of the device event type is to trigger the event
type {"http://www.w3.org/2001/xml-events",
"DOMActivate"}
. Preventing the default action of a mouse
click when the target node is an hyperlink will prevent the
activation. The same approach is made for control elements.
If a change is made before the activation, cancelling the device
event type will also reverse the change. A good example is the
attribute HTMLInputElement.checked
. As described in
[DOM
Level 2 HTML], the value of this property may be changed before
the dispatch of the event: the user clicks on the radio button, the
radio button is being checked (or unchecked) on the display, the
attribute HTMLInputElement.checked
is changed as well,
and then the device event type
{"http://www.w3.org/2001/xml-events", "click"}
is
being dispatched. If the default action of the device event type is
prevented, or if the default action attached to the
{"http://www.w3.org/2001/xml-events", "DOMActivate"}
event type is prevented, the value of the property will need to be
changed back to its original value.
Each keyboard event references a key using a
DOMString
key identifier. The set contained in this
appendix is based on the sets of keycodes from:
java.awt.event.KeyEvent
of the Java
2 Platform v1.4 [KeyEvent for Java];System.Windows.Forms.Keys
of the
Microsoft .NET Framework 1.0 [Keys enumeration for .Net].While implementations are recommended to use the most relevant identifier for a key independently of the platform or keyboard layout mappings, DOM applications should not make assumption on the ability of keyboard devices to generate them. When using keyboard events, "consider using numbers and function keys (F4, F5, and so on) instead of letters in shortcut-key combinaisons" ([DWW95]) given that most keyboard layouts will provide keys for those.
"U+000000"
, "U+000001"
, ...,
"U+FFFFFF"
are Unicode based key identifiers ([Unicode
3.0]). When a key cannot be mapped to Unicode, a specific
identifier is used (see also Guidelines
for defining key identifiers). In any case, no assumption
should be made between the sequence of keyboard events and the text
events. The following three examples illustrated the concept of
keyboard layout mappings and its relation with keyboard events.
The keystroke "U+000051"
(Latin Capital Letter Q
key) will produce (on a PC/AT US keyboard using a US keyboard
layout mapping and without any modifier activated) the Unicode
character q
(Latin Small Letter Q):
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000051"
(Latin Capital Letter Q key){"http://www.w3.org/2001/xml-events",
"textInput"}
: "q"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000051"
(Latin Capital Letter Q key)If the keyboard layout mapping is switched to a french mapping, pressing the same key will produce:
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000041"
{"http://www.w3.org/2001/xml-events",
"textInput"}
: "a"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000041"
If the keyboard layout mapping is switched to a serbian (cyrillic) mapping, pressing the same key will produce:
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000409"
{"http://www.w3.org/2001/xml-events",
"textInput"}
: "љ"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000409"
Note: The order between the text event and keyboard events may differ depending on the keyboard devices.
Keyboard input use modifier keys to change the normal behavior
of a key. The KeyboardEvent
interface provides specific attributes for them: KeyboardEvent.ctrlKey
,
KeyboardEvent.shiftKey
,
KeyboardEvent.altKey
,
KeyboardEvent.metaKey
,
and KeyboardEvent.altGraphKey
.
The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"Shift"
, shiftKey{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000051"
(Latin Capital Letter Q key), shiftKey{"http://www.w3.org/2001/xml-events",
"textInput"}
: "Q"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000051"
(Latin Capital Letter Q key), shiftKey{"http://www.w3.org/2001/xml-events", "keyup"}
:
"Shift"
The following example describes a possible sequence of keys that does not generate a Unicode character (using the same configuration):
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"Control"
, ctrlKey{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000056"
(Latin Capital Letter V key), ctrlKey{"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000056"
(Latin Capital Letter V key), ctrlKey{"http://www.w3.org/2001/xml-events", "keyup"}
:
"Control"
Keyboard input use dead keys for the input of composed character sequences. Unlike the handwriting sequence, in which users type the base character first, keyboard input require to enter a special state when a dead key is pressed and emit the character(s) only when one of a limited number of "legal" base character is entered.
The dead keys are represented in the key identifiers set using
combining diacritical marks. The sequence of keystrokes "U+000302"
(Combining Circumflex Accent key) and "U+000045" (Latin Capital
Letter E key) will likely produce (on a PC/AT french keyboard using
a french mapping and without any modifier activated) the Unicode
character é (Latin Small Letter E With Acute) or the
composed Unicode character sequence e (Latin Small Letter E) and
000302
(Combining Circumflex Accent). In practice,
french keyboard input will generate the Unicode character é
instead of the composed Unicode character sequence, as shown in the
following example:
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000302"
(Combining Circumflex Accent key){"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000302"
(Combining Circumflex Accent key){"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000045"
(Latin Capital Letter E key){"http://www.w3.org/2001/xml-events",
"textInput"}
: "é"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000045"
(Latin Capital Letter E key)Also known as front end processor, an input method editor (IME) is an application that performs the conversion between keystrokes and ideographs or other characters, usually by user-guided dictionary lookup.
The IMEs function keys are not represented in this set. As an example, receiving an keydown for the "Accept" key identifier does not necessarily implies that the text currently selected in the IME is being accepted. It only indicates that a keystroke happened, disconnected from the IME Accept functionality. Depending on the device in use, the IME Accept functionality can be obtain using the Accept key or the Return key. Keyboard events cannot be used to determine the current state of the input method editor.
Keyboard events correspond to the events generated by the input device after the keyboard layout mapping but before the processing of the input method editor.
The following example describes a possible sequence of keys to
generate the Unicode character し (Hiragana Letter SI) using
Japanese input methods. This assumes that the input method editor
is activated and in the Japanese-Romaji input mode. The keys
"Convert"
and "Accept"
may be replaced by
others depending on the input device in use and the configuration
of the IME, e.g. it could be respectively "U+000020" (Space key)
and "Enter".
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000053"
(Latin Capital Letter S key){"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000053"
(Latin Capital Letter S key){"http://www.w3.org/2001/xml-events", "keydown"}
:
"U+000049"
(Latin Capital Letter I key){"http://www.w3.org/2001/xml-events", "keyup"}
:
"U+000049"
(Latin Capital Letter I key){"http://www.w3.org/2001/xml-events", "keydown"}
:
"Convert"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"Convert"
{"http://www.w3.org/2001/xml-events", "keydown"}
:
"Accept"
{"http://www.w3.org/2001/xml-events",
"textInput"}
: "し"
{"http://www.w3.org/2001/xml-events", "keyup"}
:
"Accept"
Note: This specification does not provide a representation of the input method editor (IME) events, e.g. representing the input context.
Note: This section is informative.
The list of key identifiers contained in this appendix is not exhaustive and input devices may have to define their own key identifiers. Here is a algorithm to determine which key identifier to use:
Note: The keycodes Multiply
,
Add
, Substract
, Decimal
,
Separator
, Divide
, NumPad0
,
NumPad1
, NumPad2
, NumPad3
,
NumPad4
, NumPad5
, NumPad6
,
NumPad7
, NumPad8
, and
NumPad9
are not part of this set. Use
KeyBoard.keyLocation
to know if a key originated from
the numeric keypad.
Note: This key identifier is also used for the Return (Macintosh numpad) key.
This new specification provides a better separation between the DOM even flow, the event types, and the DOM interfaces.
This new specification introduced two new concepts in the event flow:
stopPropagation
does no longer stop the event
propagation entirely. It only stops it for a given event
group.Lots of clarifications have been made on the event types. The
conformance is now explicitly defined against the event types, and
not only the interfaces required by the event types. Support for
namespaces and the feature "BasicEvents"
have been
introduced.
The DOM Level 2 Event load
event type can now be
dispatched to more [HTML 4.01] elements. blur
and focus
have been clarified and restricted to [HTML
4.01] applications only.
Event
Event
interface has a new attribute namespaceURI
, and a four
new methods: isDefaultPrevented
,
isCustom
, stopImmediatePropagation
,
isPropagationStopped
, initEventNS
.EventTarget
EventTarget
interface has four new methods: addEventListenerNS
,
removeEventListenerNS
, willTriggerNS
,
hasEventListenerNS
.DocumentEvent
Event
interface has one new method: canDispatch
.UIEvent
UIEvent
interface has
a new method initUIEventNS
.MouseEvent
MouseEvent
interface has a new method initMouseEventNS
and a new
attribute altGraphKey
.MutationEvent
MutationEvent
interface has a new method initMutationEventNS
.EventException
DISPATCH_REQUEST_ERR
constant has been added.The interfaces CustomEvent
, TextEvent
, KeyboardEvent
,
and MutationNameEvent
were added to the Events module.
This appendix contains the complete OMG IDL [OMG IDL] for the Level 3 Document Object Model Events definitions.
The IDL files are also available as: http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/idl.zip
// File: events.idl #ifndef _EVENTS_IDL_ #define _EVENTS_IDL_ #include "dom.idl" #include "views.idl" #pragma prefix "dom.w3c.org" module events { typedef dom::DOMString DOMString; typedef dom::DOMTimeStamp DOMTimeStamp; typedef dom::DOMObject DOMObject; typedef dom::Node Node; interface EventTarget; interface EventListener; // Introduced in DOM Level 2: exception EventException { unsigned short code; }; // EventExceptionCode const unsigned short UNSPECIFIED_EVENT_TYPE_ERR = 0; // Introduced in DOM Level 3: const unsigned short DISPATCH_REQUEST_ERR = 1; // Introduced in DOM Level 2: interface Event { // PhaseType const unsigned short CAPTURING_PHASE = 1; const unsigned short AT_TARGET = 2; const unsigned short BUBBLING_PHASE = 3; readonly attribute DOMString type; readonly attribute EventTarget target; readonly attribute EventTarget currentTarget; readonly attribute unsigned short eventPhase; readonly attribute boolean bubbles; readonly attribute boolean cancelable; readonly attribute DOMTimeStamp timeStamp; void stopPropagation(); void preventDefault(); void initEvent(in DOMString eventTypeArg, in boolean canBubbleArg, in boolean cancelableArg); // Introduced in DOM Level 3: readonly attribute DOMString namespaceURI; // Introduced in DOM Level 3: boolean isCustom(); // Introduced in DOM Level 3: void stopImmediatePropagation(); // Introduced in DOM Level 3: boolean isDefaultPrevented(); // Introduced in DOM Level 3: void initEventNS(in DOMString namespaceURIArg, in DOMString eventTypeArg, in boolean canBubbleArg, in boolean cancelableArg); }; // Introduced in DOM Level 2: interface EventTarget { void addEventListener(in DOMString type, in EventListener listener, in boolean useCapture); void removeEventListener(in DOMString type, in EventListener listener, in boolean useCapture); // Modified in DOM Level 3: boolean dispatchEvent(in Event evt) raises(EventException); // Introduced in DOM Level 3: void addEventListenerNS(in DOMString namespaceURI, in DOMString type, in EventListener listener, in boolean useCapture, in DOMObject evtGroup); // Introduced in DOM Level 3: void removeEventListenerNS(in DOMString namespaceURI, in DOMString type, in EventListener listener, in boolean useCapture); // Introduced in DOM Level 3: boolean willTriggerNS(in DOMString namespaceURI, in DOMString type); // Introduced in DOM Level 3: boolean hasEventListenerNS(in DOMString namespaceURI, in DOMString type); }; // Introduced in DOM Level 2: interface EventListener { void handleEvent(in Event evt); }; // Introduced in DOM Level 2: interface DocumentEvent { Event createEvent(in DOMString eventType) raises(dom::DOMException); // Introduced in DOM Level 3: boolean canDispatch(in DOMString namespaceURI, in DOMString type); }; // Introduced in DOM Level 3: interface CustomEvent : Event { void setDispatchState(in EventTarget target, in unsigned short phase); boolean isPropagationStopped(); boolean isImmediatePropagationStopped(); }; // Introduced in DOM Level 2: interface UIEvent : Event { readonly attribute views::AbstractView view; readonly attribute long detail; void initUIEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg); // Introduced in DOM Level 3: void initUIEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg); }; // Introduced in DOM Level 3: interface TextEvent : UIEvent { readonly attribute DOMString data; void initTextEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString dataArg); void initTextEventNS(in DOMString namespaceURI, in DOMString type, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString dataArg); }; // Introduced in DOM Level 2: interface MouseEvent : UIEvent { readonly attribute long screenX; readonly attribute long screenY; readonly attribute long clientX; readonly attribute long clientY; readonly attribute boolean ctrlKey; readonly attribute boolean shiftKey; readonly attribute boolean altKey; readonly attribute boolean metaKey; readonly attribute unsigned short button; readonly attribute EventTarget relatedTarget; void initMouseEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg, in long screenXArg, in long screenYArg, in long clientXArg, in long clientYArg, in boolean ctrlKeyArg, in boolean altKeyArg, in boolean shiftKeyArg, in boolean metaKeyArg, in unsigned short buttonArg, in EventTarget relatedTargetArg); // Introduced in DOM Level 3: void initMouseEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in long detailArg, in long screenXArg, in long screenYArg, in long clientXArg, in long clientYArg, in boolean ctrlKeyArg, in boolean altKeyArg, in boolean shiftKeyArg, in boolean metaKeyArg, in unsigned short buttonArg, in EventTarget relatedTargetArg, in boolean altGraphKeyArg); // Introduced in DOM Level 3: readonly attribute boolean altGraphKey; }; // Introduced in DOM Level 3: interface KeyboardEvent : UIEvent { // KeyLocationCode const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00; const unsigned long DOM_KEY_LOCATION_LEFT = 0x01; const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02; const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03; const unsigned long DOM_KEY_LOCATION_UNKNOWN = 0x04; readonly attribute DOMString keyIdentifier; readonly attribute unsigned long keyLocation; readonly attribute boolean ctrlKey; readonly attribute boolean shiftKey; readonly attribute boolean altKey; readonly attribute boolean metaKey; readonly attribute boolean altGraphKey; void initKeyboardEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString keyIdentifierArg, in unsigned long keyLocationArg, in boolean ctrlKeyArg, in boolean shiftKeyArg, in boolean altKeyArg, in boolean metaKeyArg, in boolean altGraphKeyArg); void initKeyboardEventNS(in DOMString namespaceURI, in DOMString type, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString keyIdentifierArg, in unsigned long keyLocationArg, in boolean ctrlKeyArg, in boolean shiftKeyArg, in boolean altKeyArg, in boolean metaKeyArg, in boolean altGraphKeyArg); }; // Introduced in DOM Level 2: interface MutationEvent : Event { // attrChangeType const unsigned short MODIFICATION = 1; const unsigned short ADDITION = 2; const unsigned short REMOVAL = 3; readonly attribute Node relatedNode; readonly attribute DOMString prevValue; readonly attribute DOMString newValue; readonly attribute DOMString attrName; readonly attribute unsigned short attrChange; void initMutationEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevValueArg, in DOMString newValueArg, in DOMString attrNameArg, in unsigned short attrChangeArg); // Introduced in DOM Level 3: void initMutationEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevValueArg, in DOMString newValueArg, in DOMString attrNameArg, in unsigned short attrChangeArg); }; // Introduced in DOM Level 3: interface MutationNameEvent : MutationEvent { readonly attribute DOMString prevNamespaceURI; readonly attribute DOMString prevNodeName; // Introduced in DOM Level 3: void initMutationNameEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevNamespaceURI, in DOMString prevNodeName); // Introduced in DOM Level 3: void initMutationNameEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in Node relatedNodeArg, in DOMString prevNamespaceURI, in DOMString prevNodeName); }; }; #endif // _EVENTS_IDL_
This appendix contains the complete Java [Java] bindings for the Level 3 Document Object Model Events.
The Java files are also available as http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/java-binding.zip
package org.w3c.dom.events; public class EventException extends RuntimeException { public EventException(short code, String message) { super(message); this.code = code; } public short code; // EventExceptionCode public static final short UNSPECIFIED_EVENT_TYPE_ERR = 0; public static final short DISPATCH_REQUEST_ERR = 1; }
package org.w3c.dom.events; public interface Event { // PhaseType public static final short CAPTURING_PHASE = 1; public static final short AT_TARGET = 2; public static final short BUBBLING_PHASE = 3; public String getType(); public EventTarget getTarget(); public EventTarget getCurrentTarget(); public short getEventPhase(); public boolean getBubbles(); public boolean getCancelable(); public long getTimeStamp(); public void stopPropagation(); public void preventDefault(); public void initEvent(String eventTypeArg, boolean canBubbleArg, boolean cancelableArg); public String getNamespaceURI(); public boolean isCustom(); public void stopImmediatePropagation(); public boolean isDefaultPrevented(); public void initEventNS(String namespaceURIArg, String eventTypeArg, boolean canBubbleArg, boolean cancelableArg); }
package org.w3c.dom.events; public interface EventTarget { public void addEventListener(String type, EventListener listener, boolean useCapture); public void removeEventListener(String type, EventListener listener, boolean useCapture); public boolean dispatchEvent(Event evt) throws EventException; public void addEventListenerNS(String namespaceURI, String type, EventListener listener, boolean useCapture, Object evtGroup); public void removeEventListenerNS(String namespaceURI, String type, EventListener listener, boolean useCapture); public boolean willTriggerNS(String namespaceURI, String type); public boolean hasEventListenerNS(String namespaceURI, String type); }
package org.w3c.dom.events; public interface EventListener { public void handleEvent(Event evt); }
package org.w3c.dom.events; import org.w3c.dom.DOMException; public interface DocumentEvent { public Event createEvent(String eventType) throws DOMException; public boolean canDispatch(String namespaceURI, String type); }
package org.w3c.dom.events; public interface CustomEvent extends Event { public void setDispatchState(EventTarget target, short phase); public boolean isPropagationStopped(); public boolean isImmediatePropagationStopped(); }
package org.w3c.dom.events; import org.w3c.dom.views.AbstractView; public interface UIEvent extends Event { public AbstractView getView(); public int getDetail(); public void initUIEvent(String typeArg, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, int detailArg); public void initUIEventNS(String namespaceURI, String typeArg, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, int detailArg); }
package org.w3c.dom.events; import org.w3c.dom.views.AbstractView; public interface TextEvent extends UIEvent { public String getData(); public void initTextEvent(String typeArg, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, String dataArg); public void initTextEventNS(String namespaceURI, String type, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, String dataArg); }
package org.w3c.dom.events; import org.w3c.dom.views.AbstractView; public interface MouseEvent extends UIEvent { public int getScreenX(); public int getScreenY(); public int getClientX(); public int getClientY(); public boolean getCtrlKey(); public boolean getShiftKey(); public boolean getAltKey(); public boolean getMetaKey(); public short getButton(); public EventTarget getRelatedTarget(); public void initMouseEvent(String typeArg, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, int detailArg, int screenXArg, int screenYArg, int clientXArg, int clientYArg, boolean ctrlKeyArg, boolean altKeyArg, boolean shiftKeyArg, boolean metaKeyArg, short buttonArg, EventTarget relatedTargetArg); public void initMouseEventNS(String namespaceURI, String typeArg, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, int detailArg, int screenXArg, int screenYArg, int clientXArg, int clientYArg, boolean ctrlKeyArg, boolean altKeyArg, boolean shiftKeyArg, boolean metaKeyArg, short buttonArg, EventTarget relatedTargetArg, boolean altGraphKeyArg); public boolean getAltGraphKey(); }
package org.w3c.dom.events; import org.w3c.dom.views.AbstractView; public interface KeyboardEvent extends UIEvent { // KeyLocationCode public static final int DOM_KEY_LOCATION_STANDARD = 0x00; public static final int DOM_KEY_LOCATION_LEFT = 0x01; public static final int DOM_KEY_LOCATION_RIGHT = 0x02; public static final int DOM_KEY_LOCATION_NUMPAD = 0x03; public static final int DOM_KEY_LOCATION_UNKNOWN = 0x04; public String getKeyIdentifier(); public int getKeyLocation(); public boolean getCtrlKey(); public boolean getShiftKey(); public boolean getAltKey(); public boolean getMetaKey(); public boolean getAltGraphKey(); public void initKeyboardEvent(String typeArg, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, String keyIdentifierArg, int keyLocationArg, boolean ctrlKeyArg, boolean shiftKeyArg, boolean altKeyArg, boolean metaKeyArg, boolean altGraphKeyArg); public void initKeyboardEventNS(String namespaceURI, String type, boolean canBubbleArg, boolean cancelableArg, AbstractView viewArg, String keyIdentifierArg, int keyLocationArg, boolean ctrlKeyArg, boolean shiftKeyArg, boolean altKeyArg, boolean metaKeyArg, boolean altGraphKeyArg); }
package org.w3c.dom.events; import org.w3c.dom.Node; public interface MutationEvent extends Event { // attrChangeType public static final short MODIFICATION = 1; public static final short ADDITION = 2; public static final short REMOVAL = 3; public Node getRelatedNode(); public String getPrevValue(); public String getNewValue(); public String getAttrName(); public short getAttrChange(); public void initMutationEvent(String typeArg, boolean canBubbleArg, boolean cancelableArg, Node relatedNodeArg, String prevValueArg, String newValueArg, String attrNameArg, short attrChangeArg); public void initMutationEventNS(String namespaceURI, String typeArg, boolean canBubbleArg, boolean cancelableArg, Node relatedNodeArg, String prevValueArg, String newValueArg, String attrNameArg, short attrChangeArg); }
package org.w3c.dom.events; import org.w3c.dom.Node; public interface MutationNameEvent extends MutationEvent { public String getPrevNamespaceURI(); public String getPrevNodeName(); public void initMutationNameEvent(String typeArg, boolean canBubbleArg, boolean cancelableArg, Node relatedNodeArg, String prevNamespaceURI, String prevNodeName); public void initMutationNameEventNS(String namespaceURI, String typeArg, boolean canBubbleArg, boolean cancelableArg, Node relatedNodeArg, String prevNamespaceURI, String prevNodeName); }
This appendix contains the complete ECMAScript [ECMAScript] binding for the Level 3 Document Object Model Events definitions.
Several of the following term definitions have been borrowed or modified from similar definitions in other W3C or standards documents. See the links within the definitions for more information.
Document
.
This element node is a child of the Document
node. See
Well-Formed
XML Documents in XML [XML 1.0].For the latest version of any W3C specification please consult the list of W3C Technical Reports available at http://www.w3.org/TR.