XRSession: squeeze event
The WebXR event squeeze
is sent to an XRSession
when one of the session's input sources has completed a primary squeeze action. Examples of common kinds of primary action are users pressing triggers or buttons, tapping a touchpad, speaking a command, or performing a recognizable gesture when using a video tracking system or handheld controller with an accelerometer.
Bubbles | Yes |
---|---|
Cancelable | No |
Interface | XRInputSourceEvent |
Event handler property | onsqueeze |
For details on how the squeezestart
, squeeze
, and squeezeend
events work, and how you should react to them, see Primary squeeze actions in Inputs and input sources.
Examples
The following example uses addEventListener()
to set up a handler for the squeeze
event. The handler fetches the pose representing the target ray for tracked-pointer
inputs and sends the pose's transform to a function called myHandleSqueezeWithRay()
.
This code treats the squeeze as an instantaneous action that doesn't involve tracking an ongoing activity. If you need to track a squeeze action that isn't instantaneous, listen for the squeezestart
and squeezeend
events to sense when the squeeze action begins and ends.
xrSession.addEventListener("squeeze", event => { if (event.inputSource.targetRayMode == "tracked-pointer") { let targetRayPose = event.frame.getPose(event.inputSource.targetRaySpace, myRefSpace); if (targetRayPose) { myHandleSqueezeWithRay(targetRayPose.transform); } } });
You can of course also set up a handler for squeeze
events by setting the XRSession
object's onsqueeze
event handler property to a function that handles the event:
xrSession.onsqueeze = event => { if (event.inputSource.targetRayMode == "tracked-pointer") { let targetRayPose = event.frame.getPose(event.inputSource.targetRaySpace, myRefSpace); if (targetRayPose) { myHandleSqueezeWithRay(targetRayPose.transform); } } };
Specifications
Specification |
---|
WebXR Device API # eventdef-xrsession-squeeze |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
squeeze_event |
83 |
83 |
No |
No |
No |
No |
No |
83 |
No |
No |
No |
13.0 |
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XRSession/squeeze_event