Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

อ็อบเจ็กต์ TouchEvent ของ HTML DOM

อ็อบเจ็กต์ TouchEvent ใน HTML DOM แทนเหตุการณ์ที่เกิดจากการโต้ตอบกับองค์ประกอบ HTML โดยใช้อุปกรณ์สัมผัส (touch devices)

คุณสมบัติและเมธอดของ TouchEvent

คุณสมบัติ/เมธอด คำอธิบาย
altKeyส่งคืน Boolean: true หากปุ่ม Alt ถูกกดขณะ touch event
changedTouchesส่งคืน TouchList: รายการจุดสัมผัสที่เปลี่ยนแปลงสถานะ
ctrlKeyส่งคืน Boolean: true หากปุ่ม Ctrl ถูกกดขณะ touch event
metaKeyส่งคืน Boolean: true หากปุ่ม Meta (Cmd/Windows) ถูกกดขณะ touch event
shiftKeyส่งคืน Boolean: true หากปุ่ม Shift ถูกกดขณะ touch event
targetTouchesส่งคืน TouchList: จุดสัมผัสบนเป้าหมาย (target) และลูกของมันเท่านั้น
touchesส่งคืน TouchList: จุดสัมผัสทั้งหมดบนพื้นที่สัมผัส

ประเภทเหตุการณ์ (Event Types) ของ TouchEvent

เหตุการณ์ คำอธิบาย
ontouchcancelกระตุ้นเมื่อ touch events ถูกขัดจังหวะ
ontouchendกระตุ้นเมื่อนิ้วถูกยกขึ้นจากหน้าจอ
ontouchmoveกระตุ้นเมื่อนิ้วถูกเลื่อนข้ามหน้าจอ
ontouchstartกระตุ้นเมื่อหน้าจอถูกสัมผัส

ตัวอย่างการใช้งาน (ctrlKey)

ตัวอย่างนี้เปลี่ยนสีพื้นหลังเมื่อกด Ctrl พร้อมสัมผัส

<!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>

ตัวอย่างการใช้งาน (ontouchend)

ตัวอย่างเกมกดค้าง 1 วินาที (เหมือนบทความ 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>

ผลลัพธ์ (Output)

ก่อนกระตุ้น touch event:

อ็อบเจ็กต์ TouchEvent ของ HTML DOM

หลังกระตุ้น touch event พร้อมกด Alt (ตัวอย่างผิดพลาดในต้นฉบับ - ควรเป็น Ctrl):

อ็อบเจ็กต์ TouchEvent ของ HTML DOM

ก่อนสัมผัสปุ่ม "Hold On":

อ็อบเจ็กต์ TouchEvent ของ HTML DOM

หลังสัมผัสปุ่ม "Hold On" (และยกนิ้วหลังครบ 1 วินาที):

อ็อบเจ็กต์ TouchEvent ของ HTML DOM