DOM

Element.releasePointerCapture() メソッド

 編集:2022.09.23 by T.A.

[Edge]。→

element の、指定の pointerId のポインター キャプチャを解放(停止)します。

mdn: 特定の(PointerEvent)ポインタに対して以前に設定されたポインター キャプチャを解放(停止)します。

ポインター キャプチャの説明と特定の要素に設定する方法については、Element.setPointerCapture() メソッドを参照してください。

構文
element.releasePointerCapture(pointerId)
element Element
pointerId PointerEvent オブジェクトの pointerId
戻り値

undefined。

例外
InvalidPointerId
pointerId は、どのアクティブ ポインターとも一致しません。

<div> を押下するとポインター キャプチャが設定されます。これにより、ポインターをその境界の外側に移動した場合でも、要素を水平方向にスライドさせることができます。

HTML:

<div id="slider">SLIDE ME</div>

CSS:

div {
  width: 140px;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fbe;
}

JavaScript:

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;

HTML:

<DIV id=IdTest style="background-color:#ddd; width:100px">[DIV要素]</DIV>

JavaScript: 以下を組み込む。

function JobStart(eve){     //ポインターが押された時のイベント処理:
  IdTest.onpointermove=Job; //ポインターが動いた時の処理を割り当てる。
  IdTest.setPointerCapture(eve.pointerId); //ポインター キャプチャーの設定?
}
function JobEnd(eve){        //ポインターが放された時のイベント処理:
  IdTest.onpointermove=null; //ポインターが動いた時の処理を外す。
  IdTest.releasePointerCapture(eve.pointerId); //ポインター キャプチャーの解放。
}
function Job(eve){  //ポインターが動いた時のイベント処理:
  IdTest.style.transform="translate("+(eve.clientX-80)+"px"; //要素を移動させる。
}
IdTest.onpointerdown=JobStart; //ポインターが押された時のイベント処理の割り当て。
IdTest.onpointerup=JobEnd;     //ポインターが放された時のイベント処理の割り当て。

テスト