These are used to determine the 'ancestry' of the event target, through which the event will be dispatched. For each object, starting with the target, the parentNode method is called; if it doesn't exist or returns false, the event_parent method is tried. If that fails, then the object is taken to be the topmost object.

The return value of this method, if it exists and returns one, is presumed to be a code ref, and is called whenever an event handler (listener) dies. If there is no error_handler method that returns true, then $target->ownerDocument->error_handler is used instead. If that fails, then errors are ignored.

If a subclass needs to store event handlers and listeners elsewhere (e.g., associating them with another object), it can override addEventListener, removeEventListener, event_handler and get_event_listeners.

The $listener should be either a coderef or an object with a handleEvent method. (HTML::DOM does not implement any such object since it would just be a wrapper around a coderef anyway, but has support for them.) An object with &{} overloading will also do.

$capture is a boolean indicating whether this is to be triggered during the 'capture' phase.

This is an accessor method for event listeners created by HTML or DOM attributes beginning with 'on'. This is used internally by the on* methods. You can use it directly for efficiency's sake.

This method used to be called attr_event_listener, but that was a mistake, as there is a distinction between handlers and listeners. The old name is still available but will be removed in a future release. It simply calls event_handler.

This is not a DOM method (hence the underscores in the name). It returns a list of all event listeners for the given event name. $capture is a boolean that indicates which list to return, either 'capture' listeners or normal ones.

If there is an event handler for this event (and $capture is false), then get_event_listeners tacks a wrapper for the event handler on to the end of the list it returns.

Here is another non-DOM method. $event can be an event object or simply an event name. This method triggers an event for real, first calling dispatchEvent and then running the default action for the event unless an event listener cancels it.

It can take named args following the $event arg. These are passed to the event object's init method. Any omitted args will be filled in with reasonable defaults. These are completely ignored if $event is an event object.

Also, you can use the default arg to provide a coderef that will be called as the default event handler. HTML::DOM::Node overrides it to do just that, so you shouldn't need to use this arg except on a custom subclass of EventTarget.

When $event is an event name, trigger_event automatically chooses the right event class and a set of default args for that event name, so you can supply just a few. E.g.,