files/en-us/web/api/xrhittestsource/index.md
{{APIRef("WebXR Device API")}}{{SecureContext_Header}}{{SeeCompatTable}}
The XRHitTestSource interface of the WebXR Device API handles hit test subscriptions. You can get an XRHitTestSource object by using the {{domxref("XRSession.requestHitTestSource()")}} method.
This object doesn't itself contain hit test results, but it is used to compute hit tests for each {{domxref("XRFrame")}} by calling {{domxref("XRFrame.getHitTestResults()")}}, which returns {{domxref("XRHitTestResult")}} objects.
None.
XRHitTestSource object for a sessionCall {{domxref("XRSession.requestHitTestSource()")}} to get a hit test source.
const xrSession = navigator.xr.requestSession("immersive-ar", {
requiredFeatures: ["local", "hit-test"],
});
let hitTestSource = null;
xrSession
.requestHitTestSource({
space: viewerSpace, // obtained from xrSession.requestReferenceSpace("viewer");
offsetRay: new XRRay({ y: 0.5 }),
})
.then((viewerHitTestSource) => {
hitTestSource = viewerHitTestSource;
});
// frame loop
function onXRFrame(time, xrFrame) {
let hitTestResults = xrFrame.getHitTestResults(hitTestSource);
// do things with the hit test results
}
To unsubscribe from a hit test source, call {{domxref("XRHitTestSource.cancel()")}}. Since the object will no longer be usable, you can clean up and set the XRHitTestSource object to null.
hitTestSource.cancel();
hitTestSource = null;
{{Specifications}}
{{Compat}}