HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTML DOM TouchEventオブジェクトとは?主なプロパティとイベントタイプを実例付きで解説


HTML DOMのTouchEventオブジェクトは、タッチデバイスでHTMLドキュメントの要素を操作した際に発生するイベントを表すものです。スマートフォンやタブレットなど、タッチ操作に対応した端末でのユーザー操作をJavaScriptで検知・処理するために欠かせない仕組みとなっています。

TouchEventには、以下のようなプロパティやメソッドが用意されています。

プロパティ/メソッド
説明
altKey
タッチイベント発生時にAltキーが押されていたかどうかに対応する真偽値(Boolean)を返します
changedTouches
タッチイベントの状態変化時に発生したすべての接点(コンタクトポイント)の一覧に対応するTouchListオブジェクトを返します
ctrlKey
タッチイベント発生時にCtrlキーが押されていたかどうかに対応する真偽値(Boolean)を返します
metaKey
タッチイベント発生時にMetaキーが押されていたかどうかに対応する真偽値(Boolean)を返します
shiftKey
タッチイベント発生時にShiftキーが押されていたかどうかに対応する真偽値(Boolean)を返します
targetTouches
タッチ面(タッチサーフェス)上で発生したすべての接点の一覧に対応するTouchListオブジェクトを返します。特定のノードまたはその子ノード上でタッチが開始された場合、以降にカウントされるのは同じノード上で発生したタッチのみです
touches
タッチ面上で発生したすべての接点の一覧に対応するTouchListオブジェクトを返します。特定のノードまたはその子ノード上でタッチが開始された場合、その後に続くタッチは同じノード上で発生していなくてもカウントされます

注意:タッチイベントのサンプルは、モバイル端末やタッチ対応デバイスからアクセスできるオンラインHTMLエディタ上で実行しています。これは、画面を2秒間タッチし続けるといった実際のタッチ操作を行えるようにするためです。

それでは、TouchEventのctrlKeyプロパティの使用例を見てみましょう。

サンプルコード

<!DOCTYPE html>
<html>
<head>
<title>HTML DOM TouchEvent ctrlKey</title>
<style>
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   * {
      padding: 2px;
      margin:5px;
   }
   input[type="button"] {
      border-radius: 10px;
   }
   legend{
      border-color: #dc3545;
   }
   span {
      display: inline-block;
      width: 40px;
      height: 20px;
      margin: 1px;
      color: #fff;
      border: 3px solid black;
   }
   div span:nth-child(1){
      background-color: #FF8A00;
   }
   div span:nth-child(2){
      background-color: #F44336;
   }
   div span:nth-child(3){
      background-color: #03A9F4;
   }
   div span:nth-child(4){
      background-color: #4CAF50;
   }
</style>
</head>
<body>
   <form id="formSelect" ontouchstart="eventAction(event)">
      <fieldset>
         <legend>HTML-DOM-TouchEvent-ctrlKey</legend>
         <label for="textSelect">Background Color Changer</label>
         <div><span>alt</span><span>Ctrl</span><span>Meta</span><span>Shift</span></div>
         <div id="divDisplay">No HotKey Pressed</div>
      </fieldset>
   </form>
<script>
   var divDisplay = document.getElementById("divDisplay");
   var formSelect = document.getElementById("formSelect");
   function eventAction(event) {
      if(event.ctrlKey){
         formSelect.style.backgroundColor = '#F44336';
         formSelect.style.color = '#FFF'
         divDisplay.textContent = 'ctrl Key Pressed';
      }
   }
</script>
</body>
</html>

実行結果

タッチイベント発生前

HTML DOM TouchEventオブジェクトとは?主なプロパティとイベントタイプを実例付きで解説

Ctrlキーを押しながらタッチイベントを発生させた後

HTML DOM TouchEventオブジェクトとは?主なプロパティとイベントタイプを実例付きで解説

さらに、TouchEventには以下のようなイベントタイプが存在します。

イベント
説明
ontouchcancel
1つ以上のタッチイベントが中断されたときに発生するイベントです
ontouchend
タッチスクリーンから指が離れたときに発生するイベントです
ontouchmove
タッチスクリーン上で指が移動したときに発生するイベントです
ontouchstart
タッチスクリーンに指が触れたときに発生するイベントです

次に、ontouchendイベントの使用例を見てみましょう。このサンプルでは、ボタンを1秒間押し続けると勝ちになる簡単なミニゲーム形式で、touchstartとtouchendの挙動を確認できます。


サンプルコード

<!DOCTYPE html>
<html>
<head>
<title>HTML DOM touchend event</title>
<style>
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   * {
      padding: 2px;
      margin:5px;
   }
   input[type="button"] {
      border-radius: 50%;
      font-size: 20px;
      padding: 20px;
      border: 5px solid rgb(220, 53, 69);
      background: rgba(220, 53, 69, 0.5);
      color: #fefefe;
   }
</style></head>
<body>
   <form>
      <fieldset>
         <legend>HTML-DOM-touchend-event</legend>
         <label for="textSelect">Game Time</label>
         <input type="button" id="gameSelect" value="Hold On">
         <div id="divDisplay">Hold On for 1 - sec to Win</div>
      </fieldset>
   </form>
<script>
   var divDisplay = document.getElementById("divDisplay");
   var gameSelect = document.getElementById("gameSelect");
   var duration = 1000;
   var timer;
   gameSelect.ontouchstart = startEventAction;
   function startEventAction() {
      timer = setTimeout(victory, duration);
   }
   gameSelect.ontouchend = endEventAction;
   function endEventAction(){
      if(timer)
         clearTimeout(timer);
   }
   function victory(){
      divDisplay.textContent = "You Win"
   }
</script>
</body>
</html>

実行結果

「Hold On」ボタンに触れる前

HTML DOM TouchEventオブジェクトとは?主なプロパティとイベントタイプを実例付きで解説

「Hold On」ボタンをタッチして押し続けた後

HTML DOM TouchEventオブジェクトとは?主なプロパティとイベントタイプを実例付きで解説


  1. HTML DOM HRオブジェクトとは?作成方法と使い方を解説

    HTML DOM の HR オブジェクトは、HTML 文書内の <hr> 要素を表すオブジェクトです。<hr> 要素は、コンテンツの話題やテーマの区切りを視覚的に示す水平線(罫線)として表示されます。JavaScript を使えば、この水平線を動的に生成してページに挿入することも可能です。ここでは、HR オブジェクトの基本的な作成方法と実践的な使用例を紹介します。HRオブジェクトの作成方法(構文)hr オブジェクトを新しく作成するには、document.createElement() メソッドを使用します。構文は以下のとおりです。document.createEleme

  2. HTML DOM Ulオブジェクトとは?<ul>要素の操作方法とサンプルコードを解説

    HTML DOM の Ul オブジェクトは、HTML の <ul>(順序なしリスト)要素を表すオブジェクトです。JavaScript を使うことで、リストの動的な生成や操作が可能になります。 <ul> 要素の作成方法 新しい <ul> 要素を作成するには、document.createElement() メソッドを使用します。 var ulObject = document.createElement(UL) HTML5で非推奨となったプロパティ ulObject には以下のプロパティが存在しますが、これらは HTML5 ではサポートされていないため注