2012-09-24 22 views
10

मैं मोबाइल और डेस्कटॉप ब्राउज़र में स्पर्श समर्थन के लिए परीक्षण करने के लिएअब टच-इवेंट्स के लिए परीक्षण कैसे करें कि क्रोम मानक परीक्षण विफल रहता है?

var supportsTouch = 'ontouchstart' in document; 

पर भरोसा करते थे। उस परीक्षण के आधार पर मैं ईवेंट-लिस्टेनर्स को क्लिक-या टच-इवेंट्स पर बाध्य करता हूं। यह सभी मौजूदा ब्राउज़र संस्करणों में ठीक काम करता है लेकिन क्रोम कैनरी (24.0.1275.0 कैनरी) के लिए नवीनतम अपडेट और निश्चित रूप से DEV संस्करण इस परीक्षण को विफल करता है।

मैंने वर्तमान आधुनिक परीक्षण परीक्षण की जांच की लेकिन यह एक झूठी सकारात्मक भी लौटाता है, जिसका अर्थ यह है कि सुविधा अक्षम होने के बावजूद क्रोम स्पर्श का समर्थन करता है।

मेरा वर्तमान वर्कअराउंड किसी भी प्रकार के मोबाइल ब्राउज़र के लिए परीक्षण करना है और केवल तभी होता है जब वह उपरोक्त परीक्षण का उपयोग स्पर्श के लिए जांचने के लिए करता है। इसका नकारात्मक पक्ष यह है कि आप क्रोम के देव-टूल्स में आसान "अनुकरण स्पर्श घटनाओं" विकल्प का उपयोग नहीं कर सकते हैं। विचार?

+0

क्या आप कह रहे हैं कि ब्राउज़र स्पर्श का समर्थन करता है या जब ब्राउज़र स्पर्श का समर्थन करता है तो यह सच होता है लेकिन हार्डवेयर स्पर्श नहीं हो सकता है? –

+0

@ सैमुएल एडविनवार्ड मैंने प्रश्न –

+0

को स्पष्ट किया है, मुझे लगता है कि बस दोनों घटनाओं को बाध्यकारी काम नहीं करेगा। –

उत्तर

16

संक्षिप्त उत्तर: आपका परीक्षण अब क्रोम के किसी भी मौजूदा संस्करण में काम करेगा। लेकिन शायद हमेशा के लिए नहीं।

लांग जवाब:

क्रोम टीम स्पर्श सक्षम स्क्रीन के साथ डेस्कटॉप की बढ़ती संख्या की वजह से डेस्कटॉप ब्राउज़र में स्पर्श घटनाओं को जोड़ने के लिए, चाहता था। तो उन्होंने किया - शायद 24.0 कैनरी के समय के आसपास। तब उन्होंने पाया कि लोग "स्पर्श उपकरणों का पता लगाने" के लिए क्या कर रहे हैं, जो लोग कर रहे थे। इसके साथ समस्या है, यदि आप ब्राउज़र स्पर्श ईवेंट का समर्थन करते हैं, तो डिवाइस (Modernizr.touch के लिए भी जाता है) तो यह केवल तभी परीक्षण कर रहा है। अधिक विशेष रूप से, बस W3C/Apple TouchEvents API

वे स्पर्श/गैर-स्पर्श के लिए क्रोम के विभिन्न संस्करणों को शिप नहीं करना चाहते थे, इसलिए उन्होंने इसे बनाया ताकि वे स्टार्टअप पर टच डिवाइस का पता लगा सकें (यहां पर चर्चा की गई: http://code.google.com/p/chromium/issues/detail?id=152149)।

तो अब आपका परीक्षण फिर से काम करेगा ... लेकिन - यदि आप स्वयं को भविष्य में प्रमाणित करना चाहते हैं, तो आप अपना दृष्टिकोण बदलना चाहेंगे। यहां बताया गया है:

  1. सभी ब्राउज़र क्रोम द्वारा किए गए इस स्विच को नहीं करेंगे।

  2. टच क्षमता एक गतिशील विशेषता बन रही है: माइक्रोसॉफ्ट सर्फेस आदि के साथ आप कीबोर्ड और माउस से अनप्लग कर सकते हैं और केवल स्पर्श पर जा सकते हैं, उपयोगकर्ताओं के पास केवीएम स्विच के माध्यम से कनेक्ट टच मॉनीटर हो सकते हैं जो स्टार्टअप आदि पर नहीं मिलेगा। ब्राउज़र विक्रेता एपीआई प्रकट नहीं करना चाहते हैं और गायब हो जाना चाहते हैं - यह एक दुःस्वप्न होगा - इसलिए किसी बिंदु पर क्रोम लोग संभवतः सभी उपकरणों पर TouchEvents API को स्थायी रूप से सक्षम कर देंगे। वह परीक्षण फिर से "झूठी सकारात्मक" फेंकना शुरू कर देगा।

इसके बजाय, PointerEvents API, जो माउस, स्पर्श और लेखनी आदानों के लिए एक आम घटना इंटरफ़ेस देता है देखो। आप बटन स्पर्श इंटरफेस आदि के लिए बड़ा बनाने की सोच रहे हैं, वहाँ एक pointer media query कल्पना भी (और एक hover एक), जो जल्द ही ब्राउज़रों में दिखाई देगा - none/coarse/fine - यह अलग सत्यता इनपुट डिवाइस के बीच अंतर - और गतिशील होने से आप कनेक्टेड पॉइंटर डिवाइस के आधार पर अपनी शैलियों को समायोजित कर सकते हैं, क्योंकि वे कनेक्ट/डिस्कनेक्ट हैं।बहुत ही शांत।

  • एक PointerEvents एपीआई
  • Modernizr.touch बेहतर करने के लिए नाम बदला जा रहा है Modernizr.touchevents जोड़ा जा रहा है के लिए पता लगाने:

    Modernizr v3.0 (अगले कुछ सप्ताहों में गिर) प्रासंगिक परिवर्तनों की एक जोड़ी यहां होगा प्रतिनिधित्व करते हैं कि इसका क्या मतलब

तो मैं यदि उपलब्ध हो तो (जो यह पहले से ही IE10 में है) PointerEvents उपयोग करने पर विचार करना चाहते हैं, नहीं तो एक Modernizr.touchevents स्विच पर वापस गिरने।

+1

हाँ, मुझे पता है कि क्रोमियम बग रिपोर्ट - इसे स्वयं लिखा है। इसे लिखने का समय लेने के लिए धन्यवाद क्योंकि मैंने वास्तव में पिछले महीने या तो –

+0

में परिवर्तनों की जांच नहीं की थी, मैंने सतह के टैबलेट + आईई 10 के लिए अपने एचटीएमएल 5 वीडियो प्लेयर को ठीक करने की कोशिश करने में कुछ घंटे बिताए लेकिन सूचक घटनाएं काम नहीं करतीं अपेक्षित होना। जब तक माउस का उपयोग किया जाता है तब तक सबकुछ ठीक होता है लेकिन छूने की उम्मीद के रूप में पहचाना नहीं जाता है ... ऐसा लगता है कि आईई 10 कचरे के साथ सौदा कर सकता है जैसा कि कोई उम्मीद कर सकता है। ओल 'आईई 6 महसूस करने के लिए भाग में:/ –

+0

मुझे आशा है कि इससे सुधार होगा ... माइक्रोसॉफ्ट वास्तव में सहयोगी डिस्प्ले समेत अपनी टच टेक्नोलॉजीज को बढ़ा रहा है जो 80+ टच पॉइंट्स (किसी कारण से) को संभाल सकता है। मुझे यकीन है कि वे जानते हैं कि अगर यह खरोंच तक नहीं है तो यह सिर्फ धो नहीं होगा। –