का पता लगाने विंडोज 11 जावास्क्रिप्ट के माध्यम से

0

सवाल

मैं कोशिश कर रहा हूँ अगर पता लगाने के लिए उपयोगकर्ता का उपयोग कर रहा है विंडोज 11 सेवा करने के क्रम में सही बायनेरिज़ जब वे क्लिक करें डाउनलोड बटन है । मैंने पाया है कि माइक्रोसॉफ्ट के सुझाव के लिए यह कैसे करना है यहाँ. वे का उपयोग करने का सुझाव navigator.userAgentData.getHighEntropyValues समारोह देता है जो एक वादा युक्त मंच के संस्करण. यहाँ कोड है वे सुझाव है कि:

navigator.userAgentData.getHighEntropyValues(["platformVersion"])
 .then(ua => {
   if (navigator.userAgentData.platform === "Windows") {
     const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
     if (majorPlatformVersion >= 13) {
       console.log("Windows 11 or later");
      }
      else if (majorPlatformVersion > 0) {
        console.log("Windows 10");
      }
      else {
        console.log("Before Windows 10");
      }
   }
   else {
     console.log("Not running on Windows");
   }
 });

मेरी समस्या यह है कि इस समारोह में अतुल्यकालिक है और रिटर्न एक वादा लौटने के बजाय मूल्य. मैं नहीं चाहता करने के लिए है परिवर्तित करने के लिए कोड के सभी मैं उपयोग पार्स करने के लिए उपयोगकर्ता एजेंटों के लिए हर मंच के लिए एक async समारोह.

सबसे पहले, मैंने सोचा कि मैं का उपयोग का इंतजार है का उपयोग करने के बजाय वादा इस तरह:

let ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])

हालांकि, इस का मतलब है कि मैं की आवश्यकता होगी बनाने के लिए समारोह में शामिल है कि यह async. और के बाद से यह एक ही कोड पर काम करने की जरूरत नहीं करते कि पुराने ब्राउज़र समर्थन async और लोगों को कि नहीं, मैं ऐसा नहीं कर सकते.

वहाँ एक तरीका है पता लगाने के लिए अगर उपयोगकर्ता का उपयोग कर रहा है विंडोज 11 के बिना इस एपीआई? या इस का उपयोग कर एपीआई लेकिन एक तरह की आवश्यकता नहीं है कि async?

ecmascript-6 javascript windows-11
2021-11-23 15:35:58
1

सबसे अच्छा जवाब

4

मेरी समस्या यह है कि इस समारोह का उपयोग करता है es6 और रिटर्न एक वादा लौटने के बजाय मूल्य.

केवल "ES6" (ES2015) वहाँ तीर समारोह. आप उपयोग कर सकते हैं एक पारंपरिक समारोह में, यदि आप नहीं चाहते हैं का उपयोग करने के लिए एक तीर समारोह. वादा द्वारा प्रदान की गई है, मंच भाषा नहीं.

मैं नहीं चाहता करने के लिए है परिवर्तित करने के लिए कोड के सभी मैं उपयोग पार्स करने के लिए उपयोगकर्ता एजेंटों के लिए हर मंच के लिए एक async समारोह.

आप के लिए नहीं है, आप क्या कर सकते हैं कोड आप दिखाया गया है का उपयोग करें: .then विधि । हाँ, यह हो जाएगा अतुल्यकालिक (उच्च एन्ट्रापी जानकारी ही उपलब्ध एसिंक्रोनस रूप से, क्योंकि यह हो सकता है पूछने के लिए उपयोगकर्ता की अनुमति के लिए), लेकिन यह अभी भी काम करेगा पर ब्राउज़र का समर्थन नहीं करते कि async कार्य प्रदान की (बेशक वे समर्थन getHighEntropyValues).

अन्यथा, आप गिर करने के लिए है पर वापस पार्स navigator.userAgent और यह बेहद अविश्वसनीय है. आप चाहते हैं कि वैसे भी के लिए एजेंटों का समर्थन नहीं करते कि getHighEntropyValues या उपयोगकर्ताओं को जो इनकार करते हैं की अनुमति है, तो आप कर सकते हैं तुम्हारा सबसे अच्छा क्या लगता है के लिए ड्रॉप-डाउन. हो यकीन है कि प्रदान करने के लिए एक ड्रॉप-डाउन (या समान) तो उपयोगकर्ता कर सकते हैं एक) एक सही गलत लगता है, और बी) डाउनलोड के लिए उपयोग पर बाद में एक और मंच ।

2021-11-23 15:45:54

उत्तर के लिए धन्यवाद । आप सही कर रहे हैं कि तीर का कार्य किया जा रहा है es6 एक समस्या नहीं है और आसानी से उपयोग एक विरासत समारोह के साथ । मुझे लगता है कि समस्या यह है कि मैं कोशिश कर रहा हूँ करने के लिए पता है कि समारोह है async (चाहे कॉलबैक या का इंतजार) में एक जगह है मैं का उपयोग करना चाहते हैं कि जानकारी synchronously (ताकि मैं करने की जरूरत नहीं है सभी जगह की हैंडलिंग कोड हर मंच पर).
DHamrick

@DHamrick सीमा है कि एपीआई अतुल्यकालिक है, तो यह प्रयोग नहीं किया जा सकता synchronously.
evolutionxbox

@evolutionxbox काफी उचित! वहाँ है एक और एपीआई accomplishes है कि एक ही लक्ष्य है? पता लगाना यदि उपयोगकर्ता का उपयोग कर रहा है विंडोज 11?
DHamrick

@DHamrick नहीं, मुझे नहीं लगता है कि वहाँ है. stackoverflow.com/questions/9514179/... सबसे जवाब लग रहे करने के लिए यह प्रयोग करें
evolutionxbox

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में