JavaScript Element webkitmouseforceup Event

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

What You’ll Learn

The webkitmouseforceup event fires when pressure drops enough to end a force click after webkitmouseforcedown. Learn MouseEvent.webkitForce, onwebkitmouseforceup, cleanup patterns, portable alternatives, and five try-it labs.

01

Kind

Instance event

02

Type

MouseEvent

03

When

Force click ends

04

Handler

onwebkitmouseforceup

05

After

forcedown

06

Status

Non-standard

Introduction

When a Force Touch force click ends—pressure reduced enough after webkitmouseforcedown—Safari fires webkitmouseforceup. Use it to leave “force-click mode,” close a peek preview, or stop a temporary action you started on forcedown.

Continuous pressure updates still come from webkitmouseforcechanged. For portable apps, clean up on pointerup / pointercancel (or when a long-press timer is cleared), and treat Force Touch as an optional Safari path.

💡
Beginner tip

Always pair forcedown with forceup (or a fallback cancel path). Otherwise UI can get stuck in a “force click active” state if pressure drops without a release handler.

Understanding webkitmouseforceup

An instance event for Safari Force Touch force-click end. MDN: fired some time after webkitmouseforcedown, when pressure has been reduced sufficiently to end the force click.

  • Trigger — left the force-click pressure range (after forcedown).
  • MouseEvent — use non-standard webkitForce for pressure.
  • Pair withwebkitmouseforcedown for enter/exit UI.
  • Non-standard — Safari / WebKit proprietary; not Baseline.

📝 Syntax

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

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

onwebkitmouseforceup = (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("webkitmouseforceup", fn)
Handler propertyel.onwebkitmouseforceup = fn
Read pressureevent.webkitForce
Enter force clickwebkitmouseforcedown
Portable cleanuppointerup / pointercancel
MDN statusNon-standard

🔍 At a Glance

Four facts to remember about webkitmouseforceup.

Event type
MouseEvent

+ webkitForce

Means
force-end

After forcedown

Engine
Safari

Force Touch

Standard?
no

Non-standard

Examples Gallery

Examples follow MDN Element: webkitmouseforceup 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 ends.

Example 1 — addEventListener("webkitmouseforceup")

Log when Safari reports the force click has ended.

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

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

How It Works

After a force click, ease pressure until Safari exits force-click mode. On other browsers the handler never runs—pair with feature detection.

Example 2 — onwebkitmouseforceup Property

MDN’s alternate style using the event handler property.

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

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

How It Works

Prefer addEventListener when you need multiple listeners or easy removal.

📈 Detect, Cleanup & Lifecycle

Feature-detect Safari Force Touch, toggle a mode on down/up, add a portable fallback.

Example 3 — Feature-Detect Force Touch Events

Tell learners whether this engine looks Force Touch capable.

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

out.textContent = supported
  ? "Force Touch event properties look available (likely Safari)."
  : "No webkitmouseforceup here — clean up on pointerup instead.";

if (supported) {
  document.getElementById("pad").addEventListener(
    "webkitmouseforceup",
    () => {
      out.textContent = "Force click ended";
    }
  );
}
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 — Enter / Exit Force-Click Mode

Turn a class on at forcedown and off at forceup.

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

pad.addEventListener("webkitmouseforcedown", () => {
  pad.classList.add("force-active");
  out.textContent = "force mode ON";
});

pad.addEventListener("webkitmouseforceup", (event) => {
  pad.classList.remove("force-active");
  out.textContent =
    "force mode OFF · webkitForce=" + event.webkitForce.toFixed(3);
});
Try It Yourself

How It Works

This is the main teaching pattern: forcedown enters a mode, forceup exits it. Always have a fallback exit path on browsers without Force Touch.

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

Use Force Touch when available; otherwise enter/exit on long-press hold/release.

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

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

const forceOk = "onwebkitmouseforceup" 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 ON (fallback)"), 550);
  });
  function endHold() {
    clearTimeout(timer);
    log("released (fallback forceup)");
  }
  pad.addEventListener("pointerup", endHold);
  pad.addEventListener("pointercancel", endHold);
}
Try It Yourself

How It Works

Ship a portable release path for everyone; optionally enhance with webkitmouseforcedown / webkitmouseforceup on Safari.

🚀 Common Use Cases

  • Closing Safari-only force-click peek / preview UIs.
  • Leaving a temporary “force mode” started on forcedown.
  • Teaching the Force Touch family enter/exit pairing.
  • Stopping media speed-ups or secondary actions when force click ends.
  • Migrating legacy Force Touch demos to pointerup cleanup.

🔧 How It Works

1

Force click starts

webkitmouseforcedown after pressure crosses the force threshold.

Enter
2

Pressure may still change

webkitmouseforcechanged can keep reporting webkitForce.

Change
3

Pressure drops enough

webkitmouseforceup ends the force-click interaction.

Event
4

Your handler cleans up

Remove force-mode classes, close peeks, reset temporary state.

📝 Notes

Non-standard / Safari Force Touch Support

webkitmouseforceup 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 pointerup / long-press-end fallback.

Non-standard

Element webkitmouseforceup

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

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

Bottom line: Use Force Touch forceup only as an optional Safari enhancement; clean up on pointerup/pointercancel for everyone else.

Conclusion

webkitmouseforceup is Safari’s “force click ended” signal after webkitmouseforcedown. Use it for cleanup, pair enter/exit handlers, and never treat it as a cross-browser requirement.

Continue with webkitmouseforcewillbegin, webkitmouseforcedown, or the JavaScript hub.

💡 Best Practices

✅ Do

  • Feature-detect before attaching Force Touch listeners
  • Always exit force mode on forceup (or portable release)
  • Pair with forcedown 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 webkitmouseforceup for core product features
  • Enter force mode without a cleanup path
  • Assume Chromium/Firefox will ever fire these events
  • Confuse forceup with continuous forcechanged updates
  • Forget pointercancel in portable fallbacks

Key Takeaways

Knowledge Unlocked

Five things to remember about webkitmouseforceup

Safari force-click ended—cleanup time, not portable.

5
Core concepts
🖱 02

MouseEvent

webkitForce

API
🔄 03

Cleanup

exit force mode

Pattern
📱 04

Prefer

pointerup

Portable
🚫 05

Non-standard

Safari only

Status

❓ Frequently Asked Questions

Safari fires webkitmouseforceup sometime after webkitmouseforcedown, when pressure has been reduced enough to end the force click. It is the Force Touch “force click ended” signal.
MDN marks Element webkitmouseforceup 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("webkitmouseforceup", handler), or set onwebkitmouseforceup where supported. Always feature-detect first.
webkitmouseforcedown fires when pressure reaches force-click level. webkitmouseforceup fires later when pressure drops enough to leave that force-click state.
Prefer Pointer Events or long-press patterns (clear timers on pointerup/pointercancel). Treat Force Touch as an optional Safari enhancement only.
Did you know?

Force click end is about pressure, not necessarily finger lift. You can still be pressing lightly when webkitmouseforceup fires; a normal mouseup may come later when the button is fully released.

Next: webkitmouseforcewillbegin

Learn Force Touch before mousedown and preventDefault.

webkitmouseforcewillbegin →

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