ถ้าต้องการไม่ให้ user คัดลอกข้อมูลมาวางในช่องยืนยันอีเมล์ เราสามารถใช้คุณลักษณะ (attribute) onpaste ของเท็ก อินพุตช่วยป้องกันได้ ตามตัวอย่าง
1 | < input type = "text" name = "confrimEmail" autocomplete = "off" onDrag = "return false;" onDrop = "return false;" onPaste = "return false;" /> |
แต่เนื่องจากโอเปร่าไม่สนับสนุนความสามารถนี้ (ตัวเดียว ?) ทำให้ต้องใช้จาว่าสคริปต์เต็มรูปแบบในการตรวจสอบ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | < input type = "text" name = "confrimEmail" autocomplete = "off" onDrag = "return false;" onDrop = "return false;" onPaste = "return false;" onMouseDown = "noRightClick(event);" onKeyDown = "return noPaste(event);" /> < script > function noPaste(event) { var pressedKey = String.fromCharCode(event.keyCode).toLowerCase(); if (event.ctrlKey && pressedKey == 'v') { alert('Sorry, this functionality is disabled.'); return false; } } function noRightClick(event) { if (event.button==2) { alert("Right Click Not Allowed!"); } } </ script > |
มี 2 ฟังก์ชั่นคือ
- noRightClick ป้องกันการคลิกขวาทุกชนิด
- noPaste ป้องกันการวางโดนใช้ชอร์ตคัต Shortcut,ชอร์ตคัต คนที่เคยเขียนเกมส์มาจะห็นว่าความจริง เราใช้แค่ event.ctrlKey ก็ตรวจจับการใช้ ปุ่ม control ได้แล้ว ภาษาหรือเครื่องแมค บางครั้งต้องใช้ปุ่มนี้ในการพิมพ์อักษรบางตัว ทำให้ต้องใช้ event.keyCode มาจับว่าเป็นการวางข้อความ Ctrl + V รึเปล่า
ว่างๆ ลองดัดแปลงเป็นตรวจจับการจับภาพหน้าจอหรือพิมพ์หน้าเว็บดูนะครับ
ดูเพิ่มเติม
About the author