อ็อบเจ็กต์ 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:

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

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

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