JavaScript Element webkitmouseforcedown Event

Beginner
⏱️ 11 min read
📚 Updated: Jul 2026
🎯 5 Examples
🚀 5 Try-it labs
Non-standard
Instance event

What You’ll Learn

The webkitmouseforcedown event fires when pressure reaches a force click after mousedown. Learn MouseEvent.webkitForce, onwebkitmouseforcedown, how it pairs with webkitmouseforcechanged / forceup, portable alternatives, and five try-it labs.

01

Kind

Instance event

02

Type

MouseEvent

03

When

Force click down

04

Handler

onwebkitmouseforcedown

05

After

mousedown

06

Status

Non-standard

Introduction

On Force Touch trackpads, pressing harder can trigger a distinct “force click.” After a normal mousedown, when pressure is high enough, Safari sends webkitmouseforcedown—the start of that force-click interaction.

While pressure is changing you may also see webkitmouseforcechanged. When pressure drops out of the force-click range, Safari sends webkitmouseforceup. For cross-browser apps, prefer Pointer Events or a long-press timer instead of relying on Force Touch alone.

💡
Beginner tip

Without Force Touch hardware (or outside Safari), this event usually never fires. Always feature-detect and provide a fallback path in demos and products.

Understanding webkitmouseforcedown

An instance event for Safari Force Touch force-click start. MDN: after mousedown, when sufficient pressure qualifies as a force click, Safari begins sending webkitmouseforcedown.

  • Trigger — pressure crossed the force-click threshold (after mousedown).
  • MouseEvent — use non-standard webkitForce for pressure.
  • Pair withwebkitmouseforceup when force click ends.
  • Non-standard — Safari / WebKit proprietary; not Baseline.

📝 Syntax

Use the event name with addEventListener, or set the handler property:

JavaScript
addEventListener("webkitmouseforcedown", (event) => { });

onwebkitmouseforcedown = (event) => { };

Event type

A MouseEvent (inherits from UIEvent / Event).

Handy Force Touch properties & constants

NameMeaning
event.webkitForceCurrent pressure amount (non-standard)
MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWNMinimum force for a normal click
MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWNMinimum force for a force click
clientX / clientYPointer position in the viewport (standard MouseEvent)

⚡ Quick Reference

GoalCode
Listenel.addEventListener("webkitmouseforcedown", fn)
Handler propertyel.onwebkitmouseforcedown = fn
Read pressureevent.webkitForce
Force thresholdMouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN
Portable alternativeLong-press / PointerEvent.pressure
MDN statusNon-standard

🔍 At a Glance

Four facts to remember about webkitmouseforcedown.

Event type
MouseEvent

+ webkitForce

Means
force-click

Down moment

Engine
Safari

Force Touch

Standard?
no

Non-standard

Examples Gallery

Examples follow MDN Element: webkitmouseforcedown event and Apple’s Force Touch docs. Labs feature-detect so they still teach useful lessons without Force Touch hardware.

📚 Getting Started

Register handlers the MDN ways when a force click begins.

Example 1 — addEventListener("webkitmouseforcedown")

Log when Safari reports a force click after mousedown.

JavaScript
const pad = document.getElementById("pad");
const out = document.getElementById("out");

pad.addEventListener("webkitmouseforcedown", () => {
  out.textContent = "Force click down";
});
Try It Yourself

How It Works

Press past the force-click threshold on a Force Touch surface. On other browsers the handler never runs—pair with feature detection in real UIs.

Example 2 — onwebkitmouseforcedown Property

MDN’s alternate style using the event handler property.

JavaScript
const pad = document.getElementById("pad");
const out = document.getElementById("out");

pad.onwebkitmouseforcedown = () => {
  out.textContent = "onwebkitmouseforcedown fired";
};
Try It Yourself

How It Works

Prefer addEventListener when you need multiple listeners or easy removal.

📈 Detect, Force Value & Lifecycle

Feature-detect Safari Force Touch, read pressure at force-click, pair with forceup.

Example 3 — Feature-Detect Force Touch Events

Tell learners whether this engine looks Force Touch capable.

JavaScript
const out = document.getElementById("out");
const supported =
  "onwebkitmouseforcedown" in window ||
  "onwebkitmouseforcedown" in document.documentElement;

out.textContent = supported
  ? "Force Touch event properties look available (likely Safari)."
  : "No webkitmouseforcedown here — use long-press / Pointer pressure.";

if (supported) {
  document.getElementById("pad").addEventListener(
    "webkitmouseforcedown",
    () => {
      out.textContent = "Force click detected";
    }
  );
}
Try It Yourself

How It Works

Property presence is a hint, not a guarantee of Force Touch hardware. Treat a positive result as an optional enhancement path.

Example 4 — Read webkitForce on Force Click

Log pressure when force-click down fires, compared to Apple’s constant.

JavaScript
const pad = document.getElementById("pad");
const out = document.getElementById("out");

pad.addEventListener("webkitmouseforcedown", (event) => {
  const threshold = MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN;
  out.textContent =
    "forcedown · webkitForce=" + event.webkitForce.toFixed(3) +
    " (threshold≈" + threshold + ")";
});
Try It Yourself

How It Works

By the time webkitmouseforcedown fires, pressure should be at or above the force-click constant. Prefer named constants over hard-coded numbers.

Example 5 — Force Down / Up + Long-Press Fallback

Use Force Touch when available; otherwise simulate with a long press.

JavaScript
const pad = document.getElementById("pad");
const out = document.getElementById("out");
let timer = null;

function log(msg) {
  out.textContent = msg;
}

const forceOk = "onwebkitmouseforcedown" in window;

if (forceOk) {
  pad.addEventListener("webkitmouseforcedown", () => log("forcedown"));
  pad.addEventListener("webkitmouseforceup", () => log("forceup"));
} else {
  pad.addEventListener("pointerdown", () => {
    log("holding…");
    timer = setTimeout(() => log("long-press (fallback force-click)"), 550);
  });
  pad.addEventListener("pointerup", () => {
    clearTimeout(timer);
  });
  pad.addEventListener("pointercancel", () => {
    clearTimeout(timer);
  });
}
Try It Yourself

How It Works

Ship a portable long-press (or pressure) path for everyone; optionally enhance with webkitmouseforcedown / webkitmouseforceup on Safari.

🚀 Common Use Cases

  • Optional Safari force-click previews (peek / open in new window).
  • Teaching the Force Touch family alongside standard mouse events.
  • Speeding up media or revealing secondary actions on force click.
  • Migrating legacy WebKit Force Touch demos to long-press / Pointer Events.
  • Pairing with webkitmouseforceup to start and end a force-click mode.

🔧 How It Works

1

Normal press begins

mousedown fires (optionally after webkitmouseforcewillbegin).

Down
2

Pressure rises

webkitmouseforcechanged may stream updates via webkitForce.

Change
3

Force click threshold hit

webkitmouseforcedown signals force-click start.

Event
4

Pressure drops / release

webkitmouseforceup, then eventually mouseup.

📝 Notes

  • MDN: Non-standard — status banner required before What You’ll Learn.
  • Not Deprecated or Experimental on the MDN Element page for this event.
  • Safari / WebKit Force Touch proprietary—not for sole use in cross-browser products.
  • Prefer long-press or Pointer Events pressure as the default path.
  • Related learning: webkitmouseforcechanged, pointerdown, gesturestart, addEventListener(), JavaScript hub.

Non-standard / Safari Force Touch Support

webkitmouseforcedown is marked Non-standard on MDN. Logos use the shared browser-image-sprite.png sprite from this project. Expect Safari on Force Touch hardware only—always ship a long-press or Pointer Events fallback.

Non-standard

Element webkitmouseforcedown

Proprietary WebKit Force Touch force-click-down signal; not a portable primary API.

Safari Not standardized
Google Chrome No Force Touch events; use long-press / Pointer
No
Mozilla Firefox No Force Touch events; use long-press / Pointer
No
Apple Safari Force Touch trackpad / screen (where hardware supports)
WebKit
Microsoft Edge No Force Touch events; use long-press / Pointer
No
Opera No Force Touch events; use long-press / Pointer
No
Internet Explorer No
No
webkitmouseforcedown Non-standard

Bottom line: Use Force Touch forcedown only as an optional Safari enhancement; use long-press or PointerEvent.pressure for everyone else.

Conclusion

webkitmouseforcedown is Safari’s “force click started” signal after mousedown. Pair it with webkitmouseforceup, read webkitForce when useful, and never treat it as a cross-browser requirement.

Continue with webkitmouseforceup, webkitmouseforcechanged, or the JavaScript hub.

💡 Best Practices

✅ Do

  • Feature-detect before attaching Force Touch listeners
  • Provide a long-press / Pointer fallback for other browsers
  • Pair forcedown with forceup for enter/exit UI
  • Keep Force Touch as an optional Safari enhancement
  • Test on real Force Touch hardware when shipping Safari extras

❌ Don’t

  • Require webkitmouseforcedown for core product features
  • Assume Chromium/Firefox will ever fire these events
  • Confuse force-click down with continuous forcechanged updates
  • Skip cleanup when the force click ends (forceup)
  • Hard-code magic force numbers when constants exist

Key Takeaways

Knowledge Unlocked

Five things to remember about webkitmouseforcedown

Safari force-click started—optional, not portable.

5
Core concepts
🖱 02

MouseEvent

webkitForce

API
⚖️ 03

Pair with

forceup

Lifecycle
⏱️ 04

Prefer

long-press

Portable
🚫 05

Non-standard

Safari only

Status

❓ Frequently Asked Questions

After a mousedown has fired, when enough pressure is applied for a “force click,” Safari begins sending webkitmouseforcedown to the element. It is the Force Touch “force click started” signal.
MDN marks Element webkitmouseforcedown as Non-standard only — not Deprecated and not Experimental. It is not part of any web specification. Prefer portable APIs for production.
A MouseEvent (inherits from UIEvent / Event). Read pressure with the non-standard MouseEvent.webkitForce property.
Use element.addEventListener("webkitmouseforcedown", handler), or set onwebkitmouseforcedown where supported. Always feature-detect first.
webkitmouseforcechanged fires repeatedly as pressure changes. webkitmouseforcedown fires when pressure reaches force-click level (after mousedown). webkitmouseforceup fires when pressure drops out of that range.
Prefer Pointer Events (for example long-press timers or PointerEvent.pressure thresholds) with mouse/touch fallbacks. Treat Force Touch as an optional Safari enhancement only.
Did you know?

A force click is stronger than a normal click: MDN compares pressure against MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN. Continuous updates come from webkitmouseforcechanged; the discrete “entered force click” moment is webkitmouseforcedown.

Next: webkitmouseforceup

Learn Safari Force Touch force-click end.

webkitmouseforceup →

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