JavaScript Event defaultPrevented Property

Beginner
⏱️ 10 min read
📚 Updated: Jul 2026
🎯 5 Examples
🚀 5 Try-it labs
Baseline Widely available
Instance property

What You’ll Learn

The defaultPrevented property is a read-only boolean on every Event: true if preventDefault() canceled the default action, false if it did not. Learn how it pairs with cancelable, MDN’s link logging pattern, and dispatchEvent—with five examples and try-it labs.

01

Kind

Instance property

02

Type

boolean (read-only)

03

Means

Default was blocked?

04

Set by

preventDefault()

05

Needs

cancelable true

06

Status

Baseline widely

Introduction

Calling event.preventDefault() asks the browser not to run its normal action (follow a link, submit a form, and so on). event.defaultPrevented is how you check whether that cancel actually stuck.

Other listeners—often higher in the tree—can read the flag to react differently. MDN’s demo logs “Visiting link…” vs “you cannot visit” based on this property.

💡
Beginner tip

defaultPrevented only becomes true when preventDefault() succeeds. That requires event.cancelable === true. Calling preventDefault() on a non-cancelable event does not flip the flag.

Understanding Event.defaultPrevented

An instance property that answers: “Did preventDefault() cancel this event’s default action?”

  • Valuetrue if prevented; false otherwise.
  • Read-only — you do not assign to it; preventDefault() updates it.
  • Depends on cancelable — non-cancelable events stay false.
  • Not stopPropagation — stopping bubble does not set this flag.
  • Baseline Widely available on MDN (since July 2015); also in Web Workers.

📝 Syntax

JavaScript
event.defaultPrevented

Value

A boolean: true if the default user agent action was prevented, false if it was not.

Typical pattern

JavaScript
link.addEventListener("click", (event) => {
  if (event.cancelable) {
    event.preventDefault();
  }
  console.log(event.defaultPrevented); // true when cancel worked
});

⚡ Quick Reference

GoalCode / note
Readevent.defaultPrevented
Make it trueevent.preventDefault() on a cancelable event
Check firstif (event.cancelable) event.preventDefault()
After dispatchdispatchEvent(evt) === false when prevented
MDN statusBaseline Widely available (since July 2015)

🔍 At a Glance

Four facts to remember about Event.defaultPrevented.

Type
boolean

Read-only

true means
canceled

Default blocked

Needs
cancelable

Or stays false

Baseline
widely

Since July 2015

Examples Gallery

Examples follow MDN Event: defaultPrevented. Use View Output or Try It Yourself.

📚 Getting Started

MDN’s two-link demo and a direct preventDefault check.

Example 1 — Log Link Clicks (MDN)

One link is free; the other calls preventDefault. A document listener reads defaultPrevented.

JavaScript
function stopLink(event) {
  event.preventDefault();
}

function logClick(event) {
  const log = document.getElementById("log");
  if (event.target.tagName === "A") {
    log.innerText = event.defaultPrevented
      ? `Sorry, but you cannot visit this link!\n${log.innerText}`
      : `Visiting link…\n${log.innerText}`;
  }
}

document.getElementById("link2").addEventListener("click", stopLink);
document.addEventListener("click", logClick);
Try It Yourself

How It Works

The document listener runs after the link handler (bubble). It sees whether cancel already happened.

Example 2 — Read After preventDefault

Cancel a button’s default form submit behavior and log the flag.

JavaScript
button.addEventListener("click", (event) => {
  console.log("before:", event.defaultPrevented); // false
  event.preventDefault();
  console.log("after:", event.defaultPrevented);  // true
});
Try It Yourself

How It Works

The same event object flips from false to true once cancel succeeds.

📈 Cancelable Checks & Dispatch

Non-cancelable events, dispatchEvent, and form submit.

Example 3 — Non-Cancelable Events Stay false

Synthetic events default to cancelable: false.

JavaScript
const soft = new Event("save"); // cancelable: false
soft.preventDefault();
console.log(soft.defaultPrevented); // false

const hard = new Event("save", { cancelable: true });
hard.preventDefault();
console.log(hard.defaultPrevented); // true
Try It Yourself

How It Works

Always check cancelable (or pass { cancelable: true }) when you need cancelable custom events.

Example 4 — dispatchEvent Return Value

When a cancelable event is prevented, dispatchEvent returns false.

JavaScript
const target = new EventTarget();

target.addEventListener("save", (event) => {
  event.preventDefault();
});

const ok = target.dispatchEvent(
  new Event("save", { cancelable: true })
);
console.log(ok); // false — default was prevented
Try It Yourself

How It Works

Callers can use the return value instead of (or in addition to) reading defaultPrevented on the event.

Example 5 — Block Invalid Form Submit

Cancel submit when validation fails; log defaultPrevented.

JavaScript
form.addEventListener("submit", (event) => {
  const name = input.value.trim();
  if (!name) {
    event.preventDefault();
  }
  out.textContent = "defaultPrevented = " + event.defaultPrevented;
});
Try It Yourself

How It Works

Submit events are cancelable, so validation failures can keep the page from navigating.

🚀 Common Use Cases

  • Document-level click logging that respects canceled links.
  • Shared handlers that skip work when another listener already canceled.
  • Custom events where callers check dispatchEvent / defaultPrevented.
  • Form validation that blocks submit and confirms via the flag.
  • Teaching cancelable vs “was it actually canceled?”

🔧 How It Works

1

Event is cancelable

Built-in or { cancelable: true } synthetic event.

Setup
2

Listener calls preventDefault

Request that the default action not run.

Cancel
3

Flag flips

defaultPrevented becomes true on that event.

State
4

Others can observe

Later listeners or dispatchEvent see the cancel result.

📝 Notes

Universal Browser Support

Event.defaultPrevented is marked Baseline Widely available on MDN (since July 2015). Logos use the shared browser-image-sprite.png sprite from this project. It is also available in Web Workers.

Baseline · Widely available

Event.defaultPrevented

Read-only boolean: true if preventDefault() canceled the event’s default action.

Universal Widely available
Google Chrome Full support · Desktop & Mobile
Full support
Mozilla Firefox Full support · Desktop & Mobile
Full support
Apple Safari Full support · macOS & iOS
Full support
Microsoft Edge Full support · Chromium
Full support
Opera Full support · Modern versions
Full support
Internet Explorer Supported (legacy)
Full support
Event.defaultPrevented Excellent

Bottom line: Call preventDefault on cancelable events, then read defaultPrevented (or dispatchEvent’s return) to confirm.

Conclusion

Event.defaultPrevented reports whether preventDefault() successfully blocked the default action. Pair it with cancelable, and use it in later listeners or after dispatchEvent to react to cancels.

Continue with eventPhase, cancelable, dispatchEvent(), or the JavaScript hub.

💡 Best Practices

✅ Do

  • Check cancelable before preventDefault() in shared handlers
  • Read defaultPrevented in later / parent listeners
  • Use { cancelable: true } for cancelable custom events
  • Check dispatchEvent’s boolean return when useful
  • Keep cancel reasons clear in UI (validation messages)

❌ Don’t

  • Assign event.defaultPrevented = true yourself
  • Expect non-cancelable events to flip the flag
  • Confuse stopPropagation with preventing defaults
  • Assume every click cancel is visible without reading the flag
  • Skip testing form / link defaults after cancel

Key Takeaways

Knowledge Unlocked

Five things to remember about defaultPrevented

The yes/no after a successful preventDefault.

5
Core concepts
02

true

default blocked

Meaning
🛡️03

Needs

cancelable

Rule
📈04

Observe

later listeners

Pattern
🎯05

Baseline

since Jul 2015

Status

❓ Frequently Asked Questions

It is a read-only boolean on an Event. It is true if Event.preventDefault() successfully canceled the event’s default action, and false otherwise.
No. MDN marks Event.defaultPrevented as Baseline Widely available (since July 2015). It is not Deprecated, Experimental, or Non-standard. It is also available in Web Workers.
preventDefault() only works when event.cancelable is true. If the event is not cancelable, calling preventDefault() does not set defaultPrevented to true.
In a later listener (for example on document) to see if an earlier handler already canceled the default—useful for logging, analytics, or shared click handlers.
No. stopPropagation stops further travel through the DOM. defaultPrevented only reflects preventDefault() canceling the browser default action.
For a cancelable event, target.dispatchEvent(event) returns false if preventDefault() was called during dispatch (defaultPrevented is true). It returns true if the default was not prevented.
Did you know?

If event.defaultPrevented is true, later listeners can still run (unless someone stopped propagation). The flag only talks about the default action, not about whether more JavaScript handlers will fire.

Next: eventPhase

See whether you are in capture, at the target, or bubbling.

eventPhase →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

5 people found this page helpful