--- title: Element.setPointerCapture() slug: Web/API/Element/setPointerCapture tags: - API - DOM - Element - Method - PointerEvent - Reference - 要素 translation_of: Web/API/Element/setPointerCapture ---
setPointerCapture()
は {{domxref("Element")}} インターフェイスのメソッドで、特定の要素をこれ以降のポインターイベントのキャプチャターゲットとして指定するために使用します。 ({{domxref("Element.releasePointerCapture()")}} を介して) キャプチャが解放されるまで、それ以降のポインターのイベントはキャプチャ要素をターゲットにします。
ポインターキャプチャでは、ポインターの位置にある通常 (またはヒットテスト) のターゲットではなく、特定のポインターイベント ({{domxref("PointerEvent")}}) のイベントを特定の要素にターゲットしなおすことができます。 これは、ポインターデバイスの接触が要素から外れた場合でも、 (スクロールやパンなどで) 要素がポインターイベントを受信し続けるようにするために使用できます。
targetElement.setPointerCapture(pointerId);
pointerId
このメソッドは undefined
を返します。
例外 | 説明 |
---|---|
InvalidPointerId |
pointerId が、どのアクティブポインターとも一致しません。 |
この例では、 {{HtmlElement("div")}} を押下するとポインターキャプチャが設定されます。これにより、ポインターをその境界の外側に移動した場合でも、要素を水平方向にスライドさせることができます。
<div id="slider">SLIDE ME</div>
div { width: 140px; height: 50px; display: flex; align-items: center; justify-content: center; background: #fbe; }
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)`; } const slider = document.getElementById('slider'); slider.onpointerdown = beginSliding; slider.onpointerup = stopSliding;
{{EmbedLiveSample("Example")}}
仕様書 | 状態 | 備考 |
---|---|---|
{{SpecName('Pointer Events 2','#idl-def-element-setpointercapture-pointerid', 'setPointerCapture')}} | {{Spec2('Pointer Events 2')}} | 不安定版 |
{{SpecName('Pointer Events', '#widl-Element-setPointerCapture-void-long-pointerId', 'setPointerCapture')}} | {{Spec2('Pointer Events')}} | 初回定義 |
{{Compat("api.Element.setPointerCapture")}}