ฉันทำงานบนเว็บไซต์มือถือที่ต้องทำงานกับอุปกรณ์ที่หลากหลาย คนที่ทำให้ฉันปวดหัวในขณะนี้คือ BlackBerry
เราจำเป็นต้องสนับสนุนการคลิกทั้งคีย์บอร์ดและกิจกรรมการสัมผัส
เป็นการดีที่ฉันจะใช้:
$thing.click(function(){...})
แต่ปัญหาที่เราพบคืออุปกรณ์ BlackBerry บางตัวมีความล่าช้าที่น่ารำคาญมากตั้งแต่ช่วงเวลาที่กดปุ่มเพื่อให้เกิดการคลิก
การรักษาคือการใช้ touchstart แทน:
$thing.bind('touchstart', function(event){...})
แต่ฉันจะไปผูกเหตุการณ์ทั้งสองอย่างไร แต่เพียงหนึ่งเหตุการณ์? ฉันยังต้องการกิจกรรมการคลิกสำหรับอุปกรณ์แป้นพิมพ์ แต่แน่นอนว่าไม่ต้องการให้เหตุการณ์การคลิกเริ่มทำงานหากฉันใช้อุปกรณ์ระบบสัมผัส
คำถามโบนัส: มีการทำเช่นนี้และรองรับเบราว์เซอร์เพิ่มเติมที่ไม่มีแม้แต่เหตุการณ์เริ่มต้นหรือไม่? ในการค้นคว้านี้ดูเหมือนว่า BlackBerry OS5 ไม่รองรับระบบเริ่มต้นดังนั้นจะต้องพึ่งพากิจกรรมการคลิกสำหรับเบราว์เซอร์นั้น
ภาคผนวก:
บางทีคำถามที่ครอบคลุมมากขึ้นคือ:
ด้วย jQuery เป็นไปได้ / แนะนำให้จัดการกับทั้งการโต้ตอบแบบสัมผัสและการโต้ตอบกับเมาส์ด้วยการโยงเดียวกันหรือไม่?
เป็นการดีที่คำตอบคือใช่ ถ้าไม่ฉันมีตัวเลือก:
1) เราใช้ WURFL เพื่อรับข้อมูลอุปกรณ์ดังนั้นสามารถสร้างเมทริกซ์ของอุปกรณ์ของเราเอง เราจะใช้ touchstart หรือคลิกทั้งนี้ขึ้นอยู่กับอุปกรณ์
2) ตรวจหาการรองรับการสัมผัสในเบราว์เซอร์ผ่าน JS (ฉันต้องทำวิจัยเพิ่มเติมเกี่ยวกับเรื่องนี้ แต่ดูเหมือนว่าเป็นไปได้)
อย่างไรก็ตามยังคงมีปัญหาหนึ่ง: สิ่งที่เกี่ยวกับอุปกรณ์ที่รองรับทั้งสอง โทรศัพท์บางรุ่นที่เรารองรับ (เช่น Nokias และ BlackBerries) มีทั้งหน้าจอสัมผัสและคีย์บอร์ด ดังนั้นการพาฉันกลับไปที่คำถามเดิม ... มีวิธีใดบ้างที่จะอนุญาตทั้งสองอย่างพร้อมกัน?
.bind('touchstart mouseup')
จะแก้ปัญหาได้ (ตามความเห็นด้านล่าง)