Whether you started with the old on_____
property or addEventListener
, you know that events drive user experiences in modern JavaScript. If you’ve worked with events, you know that preventDefault()
and stopPropagation()
are frequently used to handle events. One thing you probably didn’t know: there’s a defaultPrevented
proptery on events!
Consider the following block of code:
// Specific to a link const link = document.querySelector('#my-link'); link.addEventListener('click', e => e.preventDefault()); // A larger document scope document.addEventListener('click', documentClickHandler); function documentClickHandler(event) { if (event.defaultPrevented) {// Using the property // Do one thing if the click has been handled } else { // Otherwise do something fresh } }
When preventDefault
is called on a given event, the defaultPrevented
property gets toggled to true
. Due to event propagation, the event bubbles upward with this defaultPrevented
value.
I’ve been handling events for two decades and didn’t know this property existed until now. What’s great about defaultPrevented
is that it stays with the event without needing to track track it globally!
fetch API
One of the worst kept secrets about AJAX on the web is that the underlying API for it,
XMLHttpRequest
, wasn’t really made for what we’ve been using it for. We’ve done well to create elegant APIs around XHR but we know we can do better. Our effort to…5 HTML5 APIs You Didn’t Know Existed
When you say or read “HTML5”, you half expect exotic dancers and unicorns to walk into the room to the tune of “I’m Sexy and I Know It.” Can you blame us though? We watched the fundamental APIs stagnate for so long that a basic feature…
Create a Context Menu with Dojo and Dijit
Context menus, used in the right type of web application, can be invaluable. They provide shortcut methods to different functionality within the application and, with just a right click, they are readily available. Dojo’s Dijit frameworks provides an easy way to create stylish, flexible context…