2013-01-21 31 views
11

संभव डुप्लिकेट:
What is the Best way to do Browser Detection in Javascript?विश्वसनीय डेस्कटॉप बनाम मोबाइल ब्राउज़र का पता लगाने के लिए रास्ता

मैं अनिवार्य रूप से निम्न उपाय अपनाते हैं करना चाहते हैं (JavaScript या PHP में):

if (desktop browser) { 
    do x; 
} 
else { // mobile browser 
    do not do x; 
} 

यह ज्ञात है कि ब्राउज़र का उपयोग कर detection method is not recommended। एक बेहतर समाधान capability testing का उपयोग कर रहा है। मेरा सवाल यह है कि, मोबाइल ब्राउज़र डेस्कटॉप संस्करण के रूप में स्मार्ट और शक्तिशाली के रूप में शक्तिशाली हो जाते हैं, डेस्कटॉप को गैर-डेस्कटॉप ब्राउज़र से फ़िल्टर करने के लिए आदर्श आदर्श क्षमता का पता लगाने के लिए क्या?

मुझे लगता है कि सशर्त जांच को उलटना i.e.अधिक समस्याग्रस्त साबित हो सकता है, है ना?

+3

आपको फीचर पहचान का बिंदु याद आ रहा है। बिंदु उन सुविधाओं का पता लगाना है जिनकी आप परवाह करते हैं और नहीं, यदि यह मोबाइल/डेस्कटॉप है। – Quentin

+1

यह इंगित करने के लिए धन्यवाद, @Quentin। उम्मीद है कि यह दूसरों को स्पष्ट करता है जो ऐसा करने की कोशिश कर रहे हैं। – moey

+0

संबंधित: http://stackoverflow.com/q/11381673 – moey

उत्तर

13

क्या एक छोटे से गूगल खोज कर दिया, A Beautiful Site से: रास्ता उपयोगकर्ता-एजेंट सूँघने, जो वास्तव में भयानक है के लिए बेहतर

var isMobile = { 
    Android: function() { 
     return navigator.userAgent.match(/Android/i); 
    }, 
    BlackBerry: function() { 
     return navigator.userAgent.match(/BlackBerry/i); 
    }, 
    iOS: function() { 
     return navigator.userAgent.match(/iPhone|iPad|iPod/i); 
    }, 
    Opera: function() { 
     return navigator.userAgent.match(/Opera Mini/i); 
    }, 
    Windows: function() { 
     return navigator.userAgent.match(/IEMobile/i); 
    }, 
    any: function() { 
     return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); 
    } 
}; 

if(isMobile.any()){ 
    // Mobile! 
} else { 
    // Not mobile 
} 

मैं बहस नहीं होगी कि इस सुविधा का पता लगाने है। लेकिन अगर आप यह निर्धारित करने के लिए फीचर का पता लगा रहे हैं कि डिवाइस को मोबाइल माना जाता है या नहीं, तो आप समस्याओं की पूरी नई सीरी में खुद को उजागर कर रहे हैं।

आप pixel-ratio की जांच नहीं कर सकते क्योंकि नए डेस्कटॉप कंप्यूटर अधिकतर "रेटिना" या सुपर-एचडी होंगे। आप device-orientation की जांच नहीं कर सकते क्योंकि यह अब मोबाइल के लिए कुछ अद्वितीय नहीं है। आप जीरोस्कोप की जांच नहीं कर सकते (यदि आप कर सकते हैं) क्योंकि कुछ लैपटॉप मूल्य वापस कर सकते हैं।

ऐसी वेबसाइटें बनाएं जो उन्हें अलग करने की कोशिश किए बिना सभी प्लेटफ़ॉर्म पर काम करती हैं!

+0

मैं 'window.orientation' के खिलाफ जांचने के लिए एक टिप्पणी जोड़ने वाला था लेकिन स्पष्ट रूप से आपने बताया कि यह अब मोबाइल उपकरणों के लिए अनन्य नहीं है। क्या यह मुख्य रूप से विंडोज 8 की वजह से है? – moey

+0

मुख्य रूप से, हाँ। लेकिन मुद्दा यह है कि हम (और लगभग निश्चित रूप से) बाजार को अभिविन्यास-जागरूक उपकरणों द्वारा जल्द ही बाढ़ कर सकते हैं। पता लगाना * मोबाइल * व्यर्थ है और इसे खराब अभ्यास माना जाना चाहिए। –

+1

@Remi द्वारा प्रस्तुत अवधारणा के लिए विभिन्न कार्यान्वयन हैं: 'navigator.userAgent' का मूल्यांकन करने के लिए। मुझे अनुस्मारक पसंद है जो मोबाइल विशिष्ट होने के लिए उपयोग की जाने वाली किसी चीज़ के विरुद्ध जांच कर रहा है उदा। उपकरण अभिविन्यास अब जल्द ही मान्य/प्रभावी नहीं हो सकता है। – moey

0

मुझे लगता है कि आप PHP में get_browser() फ़ंक्शन की तलाश में हैं।

browscap.ini फ़ाइल में ब्राउज़र की जानकारी को देखकर, उपयोगकर्ता के ब्राउज़र की क्षमताओं को निर्धारित करने का प्रयास करता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^