मैं एक वेब साइट लिख रहा हूं जिसका उपयोग डेस्कटॉप और टैबलेट दोनों से किया जाना है। जब इसे डेस्कटॉप से देखा जा रहा है, तो मैं चाहता हूं कि स्क्रीन के क्लिक करने योग्य क्षेत्र :hoverप्रभाव (विभिन्न पृष्ठभूमि रंग, आदि) के साथ प्रकाश में आए , एक टैबलेट के साथ, कोई माउस नहीं है, इसलिए मुझे कोई हॉवर प्रभाव नहीं चाहिए।
समस्या यह है कि जब मैं टैबलेट पर कुछ टैप करता हूं, तो ब्राउज़र में कुछ प्रकार के "अदृश्य माउस कर्सर" होते हैं जो इसे उस स्थान पर ले जाते हैं जिसे मैंने टैप किया था, और फिर इसे वहां छोड़ देता है - इसलिए मैं अभी-अभी एक लाइट के साथ टैप किया जब तक मैं कुछ और टैप नहीं करता तब तक होवर प्रभाव।
जब मैं माउस का उपयोग कर रहा हूं, तो मुझे हॉवर का प्रभाव कैसे मिल सकता है, लेकिन जब मैं टचस्क्रीन का उपयोग कर रहा हूं तो उन्हें दबा दूं?
यदि कोई इसे सुझाने के बारे में सोच रहा था, तो मैं उपयोगकर्ता-एजेंट को सूँघना नहीं चाहता। एक ही डिवाइस में एक टचस्क्रीन और एक माउस हो सकता है (शायद आज इतना आम नहीं है, लेकिन भविष्य में बहुत अधिक है)। मुझे डिवाइस में कोई दिलचस्पी नहीं है, मुझे इस बात में दिलचस्पी है कि वर्तमान में इसका उपयोग कैसे किया जा रहा है: माउस या टचस्क्रीन।
मैं पहले से ही hooking की कोशिश की touchstart, touchmoveऔर touchendघटनाओं और बुला preventDefault()उन सभी पर है, जो दबाने "अदृश्य माउस कर्सर" समय की कुछ करता है, लेकिन अगर मैं दो अलग-अलग तत्वों के बीच तेजी से आगे और पीछे टैप करता हूं, तो कुछ टैप के बाद यह "माउस कर्सर" को स्थानांतरित करना शुरू कर देगा और वैसे भी होवर इफेक्ट को रोशन करेगा - यह ऐसा है जैसे मेरा preventDefaultहमेशा सम्मानित नहीं है। जब तक आवश्यक न हो मैं आपको विवरण के साथ बोर नहीं करूंगा - मुझे यकीन नहीं है कि लेने के लिए सही तरीका है; अगर किसी के पास एक सरल समाधान है, तो मैं सभी कान हूं।
संपादित करें: इसे bog-standard CSS के साथ पुन : प्रस्तुत किया जा सकता है :hover, लेकिन यहां संदर्भ के लिए त्वरित रिप्रो है।
<style>
.box { border: 1px solid black; width: 150px; height: 150px; }
.box:hover { background: blue; }
</style>
<div class="box"></div>
<div class="box"></div>
यदि आप दोनों बक्सों पर माउस ले जाते हैं, तो उसे एक नीली पृष्ठभूमि मिलेगी, जो मुझे चाहिए। लेकिन अगर आप दोनों में से किसी एक बॉक्स पर टैप करते हैं, तो उसे एक नीली पृष्ठभूमि भी मिलेगी, जिसे रोकने के लिए मैं कोशिश कर रहा हूं।
मैंने यहां एक नमूना भी पोस्ट किया है जो ऊपर करता है और jQuery की माउस घटनाओं को भी हुक करता है। आप इसका उपयोग यह देखने के लिए कर सकते हैं कि टैप ईवेंट भी आग लगा देंगे mouseenter, mousemoveऔर mouseleave।