XRSession: selectend event

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The WebXR event selectend is sent to an XRSession when one of its input sources ends its primary action or when an input source that's in the process of handling an ongoing primary action is disconnected without successfully completing the action.

The beforexrselect is fired before this event and can prevent this event from being raised.


Use the event name in methods like addEventListener(), or set an event handler property.

addEventListener("selectend", (event) => {});

onselectend = (event) => {};

Event type

Event properties

In addition to the properties listed below, properties from the parent interface, Event, are available.

frame Read only

An XRFrame object providing the needed information about the event frame during which the event occurred. This frame may have been rendered in the past rather than being a current frame. Because this is an event frame, not an animation frame, you cannot call the XRFrame method getViewerPose() on it; instead, use getPose().

inputSource Read only

An XRInputSource object indicating which input source generated the input event.



Triggered when the user stops to press triggers or buttons, taps a touchpad, speaks a command, or performs a recognizable gesture when using a video tracking system or handheld controller with an accelerometer.

Use cases

The selectend and selectstart events tell you when you might want to display something to the user indicating that the primary action is going on. This might be drawing a controller with the activated button in a new color, or showing the targeted object being grabbed and moved around, starting when selectstart arrives and stopping when selectend is received.

The select event is the event that tells your code that the user has completed the action they want to complete. This might be as simple as throwing an object or pulling the trigger of a gun in a game, or as involved as placing a dragged object in a new location.

If your primary action is a simple trigger action and you don't need to animate anything while the trigger is engaged, you can ignore the selectstart and selectend events and act on the start event.


See the selectstart event for example code.


WebXR Device API
# eventdef-xrsession-selectend
WebXR Device API
# dom-xrsession-onselectend

Browser compatibility

BCD tables only load in the browser

See also