Mouse Events |
Triggered by the user’s mouse actions like clicks, hovers, or presses. |
element.addEventListener("click", handler) |
onclick: Element is clicked
ondblclick: Double-click
onmouseover: Mouse enters
onmouseout: Mouse leaves
onmousedown, onmouseup, onmousemove, oncontextmenu |
Flipping a light switch |
Buttons, image zooms, and toggles |
Use for interactive elements; debounce mousemove |
Keyboard Events |
Triggered when keys are pressed or released. |
document.addEventListener("keydown", handler) |
onkeydown: Key is pressed
onkeyup: Key is released
onkeypress: Key is pressed and held (deprecated) |
Typing on a keypad |
Hotkeys, form input, games |
Use event.key or event. code; sanitize input |
Form Events |
Triggered when form elements are interacted with or submitted. |
form.addEventListener("submit", handler) |
onsubmit: Form is submitted
onchange: Value is changedoninput: Live typing
onreset: Form resetoninvalid: Input is invalid |
Sending a message in a mailbox |
Data validation, login/register forms |
Use preventDefault() to stop reload |
Window Events |
Browser-level or document-related events. |
window.addEventListener("load", handler) |
onload: Page fully loaded
onresize: Window size changedonscroll: Scrolling
onunload: Leaving page
onbeforeunload, onerror, onhashchange, onpopstate |
Curtain opening on stage |
Responsive layout, analytics, transitions |
Throttle resize/scroll; attach listeners early |
Touch Events |
Mobile or touchscreen finger gestures. |
element.addEventListener("touchstart", handler) |
ontouchstart: Finger touches
ontouchmove: Finger moves
ontouchend: Finger lifts
ontouchcancel: Touch interrupted |
Swiping through photos |
Mobile menus, swipes, drawing apps |
Combine with mouse events for better device support |
Focus & Blur Events |
Happens when elements like inputs or buttons gain/lose focus. |
input.addEventListener("focus", handler) |
onfocus: Element gains focus
onblur: Loses focus
onfocusin, onfocusout: Bubble/capture versions |
Spotlight on a speaker |
Highlight inputs, guide users |
Enhance UX; improve accessibility |
Clipboard Events |
Copy, paste, or cut actions inside editable fields. |
textarea.addEventListener("paste", handler) |
oncopy: Copy content
oncut: Cut content
onpaste: Paste content |
Copying from a book |
Restrict/mod content, custom paste actions |
Use event.clipboardData; sanitize pasted data |
Media Events |
Audio or video state changes (play, pause, load). |
video.addEventListener("play", handler) |
onplay: Media starts
onpause: Media pauses
onended: Finished
onvolumechange, onloadeddata, onerror, onwaiting, oncanplay, ontimeupdate, onseeked, onseeking |
Pressing play on a music player |
Custom player controls, analytics |
Attach handlers after media element loads |
Drag and Drop Events |
Dragging and dropping elements across the screen. |
element.addEventListener("dragstart", handler) |
ondragstart: Start dragging
ondrag: While dragging
ondragover: Drag over targetondragenter, ondragleave, ondrop, ondragend |
Moving files on the desktop |
File uploads, reorderable items |
Prevent default for ondrop, add drag visual cues |
Animation Events |
CSS animations starting, ending, or repeating. |
element.addEventListener("animationend", handler) |
onanimationstart: Animation startsonanimationend: Endsonanimationiteration: Repeats |
Watching the loading bar finish |
Trigger after animations for further actions |
Pair with classes or transitions |
Transition Events |
CSS transitions are completing or being canceled. |
element.addEventListener("transitionend", handler) |
ontransitionstart: Starts
ontransitionend: Ends
ontransitioncancel: Interrupted |
A door sliding shut |
UI feedback after transition ends |
Attach only to animated elements |
Pointer Events |
Unified event for mouse, pen, and touch input. |
element.addEventListener("pointerdown", handler) |
onpointerdown, onpointerup, onpointermove, onpointerenter, onpointerleave, onpointercancel |
Finger or stylus on a screen |
Drawing apps, multi-device support |
Preferred for modern devices over mouse/touch separately |