トップページ >  HTML5 >  changeTouchesで同時にタッチしている数を調べる
初版2013/03/12: 最終更新日2013/03/12
changeTouchesで同時にタッチしている数を調べる
目次
changeTouchesで同時にタッチしている数を調べる
changeTouchesをtouchendイベントで実行する
changeTouchesで同時にタッチしている数を調べる
HTML5でスマホのchangeTouchesで同時にタッチしている数を調べることができます。addEventListenerをcanvas要素に追加します。
正確には、event.changeTouches.lengthとします。最大5本まで認識可能です。
以下、ソースです。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
<meta name="apple-mobile-web-app-capable" content="yes"> 
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon" href="./icon.png" />
<meta charset="utf-8" />
<title>タイトル</title>
<script language="JavaScript">
<!--
onload = function() {
    canvasId.addEventListener('touchstart',method,false);
};

function method(event){
    alert(event.changedTouches.length);
}

setTimeout("scrollTo(0,1)", 50);
//-->
</script>
</head>
<body>
<canvas id='canvasId' width='305' height='400'></canvas>
</body>
</html>

これで、こちらにスマホでアクセスしてください。
画面をtouchstartすると、絶対座標がアラートで表示されます。PCからアクセスしてもtouchイベント自体がないので何も起こりません。

changeTouchesをtouchendイベントで実行する
上記はイベントリスナーにtouchstartを登録してtargetTouches.lengthを調べました。
タッチが終了する場合に発生するtouchendイベントでtargetTouchesが取得できるか調べてみます。
以下、ソースです。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
<meta name="apple-mobile-web-app-capable" content="yes"> 
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon" href="./icon.png" />
<meta charset="utf-8" />
<title>タイトル</title>
<script language="JavaScript">
<!--
onload = function() {
    canvasId.addEventListener('touchend',method,false);
};

function method(event){
    alert(event.changedTouches.length);
}

setTimeout("scrollTo(0,1)", 50);
//-->
</script>
</head>
<body>
<canvas id='canvasId' width='305' height='400'></canvas>
</body>
</html>

これで、こちらにスマホでアクセスしてください。
画面をタッチすると、タッチした指の数が表示されます。touchendイベントでchangedTouchesを取得することは可能です。
PCからアクセスしてもtouchイベント自体がないので何も起こりません。