검색 Windows11 자바 스크립트를 통해

0

질문

나는 감지하려는 경우에는 사용자가 사용하여 Windows11 서비스를 제공하기 위해서는 올바른 이진을 클릭하면 다운로드 버튼을 누릅니다. 내가 찾는 Microsoft 의 제안에 대한 어떻게 이렇게하려면 여기에. 그들은 사용하는 것이 좋습니다 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");
   }
 });

내 문제는 이 기능이 비동기적 약속을 반환합 반환하는 대신 값으로 설정합니다. 나는 원하지 않을 변환하는 모든 코드를 사용을 분석하는 사용자 에이전트에 대한 모든 플랫폼에서는 비동기 기능이다.

처음에 생각했어 사용하는 것이 기다리고 대신 사용하여 약속을 다음과 같다:

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

그러나,이 의미하는데 필요 기능을 포함하는 그것 async. 그리고 이후 이 같은 코드를 작동할 필요가 이전 버전의 브라우저에서 지원하지 않는 비동기 그리고 사람,나는 할 수 없습니다.

는 방법이 있을 감지하는 경우에는 사용자가 사용하여 Windows11 지 않고 이 API 는? 또는 API 를 사용하지만에서는 방식으로 필요하지 않 async?

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

최고의 응답

4

내 문제는 이 기능을 사용하 es6 약속을 반환합 반환하는 대신 값으로 설정합니다.

다만"ES6"(ES2015)이있는 화살표 기능입니다. 당신이 사용할 수 있는 전통적인 기능을 원하지 않는 경우에 화살표를 사용하여 기능입니다. 이 약속은 플랫폼에서 제공하지 않습니다.

나는 원하지 않을 변환하는 모든 코드를 사용을 분석하는 사용자 에이전트에 대한 모든 플랫폼에 async 기능입니다.

당신 없이,당신이 무엇을 할 수 있는 코드에 당신은 다음과 같은 사용: .then 방법입니다. 네,그것이 될 것입니다 비동기(높은-엔트로피를 정보 만을 사용할 수 있는 비동기적으로 있기 때문에,기기가 사용자에 대한 허가)지만,그것은 여전히 작업에 지원하지 않는 브라우저 async 기능 제공(물론 그들은 지원 getHighEntropyValues).

그렇지 않으면,당신은 당시에 대한 구문 분석 navigator.userAgent 그 악명 높은 신뢰할 수 있습니다. 당신이 원하는 어쨌든 에이전트를 지원하지 않는 getHighEntropyValues 또는 사용자가 거부하는 권한,그래서 당신이 할 수 있는 최선에 대한 생각의 드롭다운. 을 제공해야 합 드롭다운(또는 이와 유사한 것)그래서 사용할 수 있습 A)정확한 잘못된 추측,그리고 B)다운로드를 위해 이 나중에 사용하는 다른 플랫폼입니다.

2021-11-23 15:45:54

답변 주셔서 감사합니다. 당신은 맞는 화살표하고 있는 기능 es6 문제가 되지 않고 쉽게 사용할 수 있습니다.존의 스타일에 기능입니다. 나는 문제는 나를 해결하기 위해 노력하고있는 함수가 비동기(는지 여부에 의해 콜백 또는 기다)장소에서 사용하고 싶다는 정보 동(지 않도록 대체하는 필요의 모든 처리 코드가 모든 플랫폼에서).
DHamrick

@DHamrick 제한하는 API 는 비동기,그래서 그것은 동기적으로 사용할 수 없습니다.
evolutionxbox

@evolutionxbox 공정한 충분합니다! 은 거기에 다른 API 과 동일한 작업을 수행하는 목표입니까? 을 파악하는 경우 사용자가 사용하여 Windows11?
DHamrick

@DHamrick 없지가 있다고 생각하지 않습니다. stackoverflow.com/questions/9514179/... 대부분의 답변를 사용한 것으로 보인다
evolutionxbox

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................