MDN documentation कहता है कि window.navigator.userAgent को बहिष्कृत किया गया है और इसका उपयोग नहीं किया जाना चाहिए। यदि मैं एनालिटिक्स (फीचर डिटेक्शन नहीं) के लिए उपयोगकर्ता ब्राउज़र और ओएस डेटा एकत्र करना चाहता हूं, तो इसके बजाय मुझे क्या उपयोग करना चाहिए?अगर window.navigator.userAgent को बहिष्कृत किया गया है, तो इसके बजाय मुझे क्या उपयोग करना चाहिए?
उत्तर
उपयोगकर्ता एजेंट स्ट्रिंग अर्थहीन और बेहद अविश्वसनीय हो रही है।
आपको उपयोगकर्ता एजेंट स्ट्रिंग का उपयोग नहीं करना चाहिए, बल्कि आपको सुविधा का पता लगाने का उपयोग करना चाहिए। यदि आपको फीचर एक्स का उपयोग करने की आवश्यकता है, तो यह देखने के लिए जांच करें कि एक्स उपलब्ध है या नहीं।
लेकिन सीधे आपके प्रश्न का उत्तर देने के लिए, कोई जेएस विकल्प नहीं है।
ब्राउज़र उपयोगकर्ता एजेंट स्ट्रिंग का पता लगाने के आधार पर पहचान अविश्वसनीय है और अनुशंसित नहीं है, के रूप में उपयोगकर्ता एजेंट स्ट्रिंग उपयोगकर्ता विन्यास योग्य है।
उदाहरण के लिए: config:
- Firefox में, आप के बारे में में वरीयता general.useragent.override बदल सकते हैं। कुछ फ़ायरफ़ॉक्स एक्सटेंशन करते हैं; हालांकि, यह केवल HTTP हेडर को भेजता है जो भेजा जाता है, और जावास्क्रिप्ट कोड द्वारा किए गए ब्राउज़र पहचान को प्रभावित नहीं करता है।
- ओपेरा 6 + उपयोगकर्ताओं के माध्यम से ब्राउज़र पहचान स्ट्रिंग सेट करने के लिए एक मेनू
- माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर Windows रजिस्ट्री
- सफारी और iCab उपयोगकर्ताओं को ब्राउज़र उपयोगकर्ता एजेंट स्ट्रिंग को बदलने के लिए इंटरनेट एक्सप्लोरर या नेटस्केप तार पूर्वनिर्धारित करने की अनुमति का उपयोग करता है की अनुमति देता है मेनू के माध्यम से।
मुझे लगता है, कि वे जावास्क्रिप्ट से पूरी तरह से इस सुविधा को दूर करने के कोशिश कर रहे हैं।
अद्यतन:
Object-Oriented JavaScript, 2nd Edition: यह उपयोगकर्ता एजेंट स्ट्रिंग पर भरोसा करने के लिए बेहतर नहीं है, लेकिन सूँघने विशेषता (जिसे क्षमता का पता लगाने कहा जाता है) के बजाय का उपयोग करें। इसका कारण यह है कि सभी ब्राउज़रों और उनके विभिन्न संस्करणों का ट्रैक रखने के लिए यह कठिन है। यह है बस यह जांचना आसान है कि आप जिस सुविधा का उपयोग करना चाहते हैं वह वास्तव में उपयोगकर्ता के ब्राउज़र में उपलब्ध है।
if (typeof window.addEventListener === 'function') { // feature is supported, let's use it } else { // hmm, this feature is not supported, will have to // think of another way }
- 1. Arguments.callee बहिष्कृत है - इसके बजाय क्या उपयोग किया जाना चाहिए?
- 2. जब मुझे कुछ आइटम चाहिए, तो क्या मुझे इसके बजाय "int id" का उपयोग करना चाहिए?
- 3. अगर स्विंग को बहिष्कृत किया गया है, तो विकल्प क्या है?
- 4. अब नियंत्रक को बहिष्कृत किया गया है, मैं इसके बजाय क्या उपयोग करूं?
- 5. iKS7 में GKSession को बहिष्कृत किया गया है, अब मुझे क्या उपयोग करना चाहिए?
- 6. प्रकार HTable (config, tablename) को बहिष्कृत किया गया है। इसके बजाय क्या उपयोग करें?
- 7. ग्रोवी String.toURL बहिष्कृत है - क्यों और इसके बजाय हमें क्या उपयोग करना चाहिए?
- 8. getPreventDefault() का उपयोग बहिष्कृत किया गया है। इसके बजाय डिफ़ॉल्ट का उपयोग करें। मुझे यह त्रुटि क्यों मिल रही है और इसके लिए समाधान क्या है?
- 9. क्या window.navigator.userAgent वास्तव में बहिष्कृत होने जा रहा है?
- 10. एचटीएमएल विशेषता bgcolor बहिष्कृत है: इसके बजाय क्या उपयोग करें?
- 11. आईओएस 6.0 में TWRequest को बहिष्कृत किया गया है - मैं इसके बजाय क्या उपयोग कर सकता हूं?
- 12. आईओएस 5.1 में बहिष्कृत UISegmentedControlStyleBezeled के बजाय मुझे क्या उपयोग करना चाहिए?
- 13. PHP में फ़ंक्शन बहिष्कृत, अब मुझे क्या उपयोग करना चाहिए?
- 14. लोडविथपार्टियलनाम() के बजाय मुझे क्या उपयोग करना चाहिए?
- 15. एलिमेंट "संरेखण" अप्रचलित या गैर मानक है: इसके बजाय मुझे क्या उपयोग करना चाहिए?
- 16. हेरोकू लॉग चेतावनी "(नोड) sys को बहिष्कृत किया गया है। इसके बजाय उपयोग का उपयोग करें" जब स्क्रिप्ट
- 17. क्या मुझे MySQL के बजाय NoSQL का उपयोग करना चाहिए?
- 18. getActionView को बहिष्कृत किया गया है?
- 19. । डायनामिक टाइप को बहिष्कृत किया गया है।
- 20. एसएसकेएनएफ के बजाय मुझे क्या उपयोग करना चाहिए?
- 21. enum का विस्तार नहीं कर सकता; इसके बजाय मुझे क्या उपयोग करना चाहिए?
- 22. Elixir is_range गार्ड को परिभाषित नहीं किया गया है? मुझे क्या उपयोग करना चाहिए?
- 23. क्या मुझे TFilename की बजाय स्ट्रिंग का उपयोग करना चाहिए?
- 24. क्या एक्ससीबी उत्पादन के उपयोग के लिए तैयार है? क्या मुझे इसके बजाय एक्सलिब का उपयोग करना चाहिए?
- 25. अगर मुझे "लपेटा" स्ट्रीम को संरक्षित करने की आवश्यकता है तो क्या मुझे बाइनरी रीडर का निपटान करना चाहिए?
- 26. क्या मुझे ढांचे का उपयोग करना चाहिए?
- 27. क्या हम layerk/layerY के लिए उपयोग करना चाहिए क्योंकि उन्हें वेबकिट में बहिष्कृत किया गया है?
- 28. मुझे बहिष्कृत आकार के साथ क्या करना चाहिए विथफॉन्ट: विधि?
- 29. com.google.appengine.repackaged * के बजाय मुझे क्या उपयोग करना चाहिए?
- 30. पर्ल में printf के बजाय मुझे क्या उपयोग करना चाहिए?
आधुनिक पहले से ही सुविधा का पता लगाने का उपयोग करता है: उदाहरण के लिए कोड निम्नलिखित पर एक नजर है। उदाहरण के लिए: https://github.com/Modernizr/Modernizr/blob/master/src/prefixedCSSValue.js – Quentin
हां, आप सही हैं –
आप एक प्रतिपादन बग के आसपास काम करने की आवश्यकता के बारे में कैसे पता लगाते हैं? – Jules