Element: setPointerCapture() method
{{APIRef("DOM")}}
The setPointerCapture()
method of the
{{domxref("Element")}}
interface is used to designate a specific element as the
capture target of future pointer events. Subsequent events for the pointer will
be targeted at the capture element until capture is released (via
{{domxref("Element.releasePointerCapture()")}}
or the
{{domxref("Element/pointerup_event", "pointerup")}}
event is fired).
See pointer events for an overview and examples of how pointer capture works.
Syntax
setPointerCapture(pointerId)
Parameters
pointerId
- : The
{{domxref("PointerEvent.pointerId", "pointerId")}}
of a{{domxref("PointerEvent")}}
object.
- : The
Return value
None ({{jsxref("undefined")}}
).
Exceptions
NotFoundError
{{domxref("DOMException")}}
- : Thrown if
pointerId
does not match any active pointer.
- : Thrown if
Examples
This example sets pointer capture on a {{HtmlElement("div")}}
when you press down on
it. This lets you slide the element horizontally, even when your pointer moves outside of
its boundaries.
HTML
<div id="slider">SLIDE ME</div>
CSS
div {
width: 140px;
height: 50px;
display: flex;
align-items: center;
justify-content: center;
background: #ffbbee;
touch-action: none;
}
JavaScript
const slider = document.getElementById("slider");
function beginSliding(e) {
slider.onpointermove = slide;
slider.setPointerCapture(e.pointerId);
}
function stopSliding(e) {
slider.onpointermove = null;
slider.releasePointerCapture(e.pointerId);
}
function slide(e) {
slider.style.transform = `translate(${e.clientX - 70}px)`;
}
slider.onpointerdown = beginSliding;
slider.onpointerup = stopSliding;
Result
{{EmbedLiveSample("Examples")}}
Specifications
{{Specifications}}
Browser compatibility
{{Compat}}
See also
{{domxref("Element.hasPointerCapture","Element.hasPointerCapture()")}}
{{domxref("Element.releasePointerCapture","Element.releasePointerCapture()")}}
- Pointer events