JavaScript의 웹 페이지에서 OS 세부 정보를 가져옵니다. 👷♂️ 답: JS로 MacOS, iOS, Windows, Android 및 Linux OS 감지
17424 단어 htmlwebdevcssjavascript
나는 내가 이것에 너무 서툴러서 그런 일을 하려는 생각을 거의 즉시 철회했다고 고백해야 했다. 하지만 지금은 Vue가 아니라면 바닐라 JS로 이 작업을 수행해야 한다고 생각합니다.
더 나아가 OS를 감지한 후 DOM 요소를 동적으로 추가하거나 삭제하기로 결정했습니다. 그렇지는 않지만 웹과 모바일 모두에서 OS를 감지하는 방법을 확실히 배울 것입니다.
이런!
데스크톱 OS 감지(Windows/Mac/Linux)
먼저 클라이언트의 시스템이 응용 프로그램 스토어를 확장해야 하는 OS(Windows), 거의 모든 프로그래머와 해커가 가장 좋아하는 OS(Linux) 또는 XCode를 독점적으로 실행할 수 있는 OS(Mac)를 실행하고 있는지 감지해 보겠습니다. .
이는
navigator.appVersion
개체의 window
값을 분석하여 간단히 달성할 수 있습니다. 이 간단한 일이 많은 일을 할 수 있습니다. 현재 장치 OS에 대해 알려줄 뿐만 아니라(자세한 내용은 아래 참조) 현재 실행 중인 브라우저에 대한 버전 정보를 얻는 데 사용할 수도 있습니다.OS 유형에 관한 문자열 정보를 보유하는 JS의 변수로
detectedOS
를 선언해 보겠습니다. 다음으로 3개의 if
검사를 수행합니다( switch
도 작동할 수 있음).// default value just in case if nothing is detected
var detectedOS = "Unknown OS";
첫 번째 검사에서
navigator.appVersion
를 사용하여 Win
(Windows), Mac
(MacOS) 및 Linux
의 세 가지 주요 OS 플랫폼의 index을 가져옵니다.if (navigator.appVersion.indexOf("Mac") != -1)
detectedOS = "MacOS";
여기에서 인덱스 값이
1
와 같지 않은지 확인한 다음 변수 값을 "MacOS"로 설정합니다.마찬가지로 다른 두 OS에 대해서도 동일한 검사를 수행할 수 있습니다.
var detectedOS = "Unknown OS";
if (navigator.appVersion.indexOf("Mac") != -1)
detectedOS = "MacOS";
if (navigator.appVersion.indexOf("Win") != -1)
detectedOS = "Windows";
if (navigator.appVersion.indexOf("Linux") != -1)
detectedOS = "Linux";
좋아, 모두 멋지지만 특정 OS가 감지되었음을 사용자에게 표시하는 방법은 무엇입니까? 이를 수행하는 방법에는 여러 가지가 있습니다. 한 가지 좋은 방법은 다음과 같습니다.
버튼을 클릭하면 "Device OS is:"가 표시되는
alert()
추가.var detectOS = "Unknown OS";
if (navigator.appVersion.indexOf("Win") != -1)
detectOS = "Windows";
if (navigator.appVersion.indexOf("Mac") != -1)
detectOS = "MacOS";
if (navigator.appVersion.indexOf("Linux") != -1)
detectOS = "Linux";
document.querySelector('button').addEventListener('click', detect);
function detect() {
alert(`Device OS is: ${detectOS}`)
}
Mac에서는 다음과 같이 표시됩니다.
Windows에서:
그리고 리눅스에서:
죄송합니다. 저는 Linux 머신이 없습니다 🙃
모바일 OS(Android/iOS) 감지
현재 코드를 사용하여 모바일에서 실행하려고 하면(CodePen을 통해) 다음 경고가 표시됩니다.
Android is based on a modified version of Linux은 사실이지만 완전히 Linux OS는 아닙니다. 그렇다면 여기에서 "Linux"대신 "Android"가 감지되는지 어떻게 확인합니까?
이것은 다음 답변에서 Stackoverflow 사용자 Vladyslav Turak에 의해 설명됩니다.
답: JS로 MacOS, iOS, Windows, Android 및 Linux OS 감지
16년 7월 7일
171
window.navigator
개체와 해당 속성(platform
, appVersion
및 userAgent
)에 대해 많은 것을 배웠습니다. 내 생각에 사용자의 OS를 100% 확실하게 감지하는 것은 거의 불가능하지만 내 경우에는 85%-90%면 충분했습니다.
그래서 수많은 stackoverflows의 답변과 일부 기사를 검토한 후, 저는…
Open Full Answer
function getOS() {
var userAgent = window.navigator.userAgent,
platform = window.navigator.platform,
macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],
windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],
iosPlatforms = ['iPhone', 'iPad', 'iPod'],
os = null;
if (macosPlatforms.indexOf(platform) !== -1) {
os = 'Mac OS';
} else if (iosPlatforms.indexOf(platform) !== -1) {
os = 'iOS';
} else if (windowsPlatforms.indexOf(platform) !== -1) {
os = 'Windows';
} else if (/Android/.test(userAgent)) {
os = 'Android';
} else if (!os && /Linux/.test(platform)) {
os = 'Linux';
}
return os;
}
alert(getOS());
보시다시피 이전과 동일한 if
문 검사를 사용하고 있지만 Android의 경우 /Android/.test
으로 navigator.userAgent
테스트하고 있습니다.
이것은 매우 좋은 해결 방법이며 내 Android 휴대폰에서 실행하면 결과는 다음과 같습니다.
해당 기기를 확인할 iOS 기기가 없습니다. 그렇게 할 수 있으며 아래 의견에 알려주십시오.
이에 대한 답을 준 사람은 다음과 같이 분명히 말했습니다.
This code works properly. I tested it on all the OS: MacOS, iOS, Android, Windows and UNIX, but I can't guarantee 100% sure.
읽어주셔서 감사합니다. 감사합니다! 좋은 하루 보내세요. (✿◕‿◕✿)
Debugging can be tough 😂
. pic.twitter.com/UtkN6iuRBG
— Coding Interview Coach (@CoachCoding)
📫 주간 개발자 뉴스레터 구독 📫
추신: 올해부터 여기 DEV Community에 글을 쓰기로 했습니다. 이전에는 Medium에 글을 썼습니다. 내 기사를 보고 싶은 사람이 있으면 here의 내 미디엄 프로필입니다.
Reference
이 문제에 관하여(JavaScript의 웹 페이지에서 OS 세부 정보를 가져옵니다. 👷♂️ 답: JS로 MacOS, iOS, Windows, Android 및 Linux OS 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vaibhavkhulbe/get-os-details-from-the-webpage-in-javascript-b07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function getOS() {
var userAgent = window.navigator.userAgent,
platform = window.navigator.platform,
macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],
windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],
iosPlatforms = ['iPhone', 'iPad', 'iPod'],
os = null;
if (macosPlatforms.indexOf(platform) !== -1) {
os = 'Mac OS';
} else if (iosPlatforms.indexOf(platform) !== -1) {
os = 'iOS';
} else if (windowsPlatforms.indexOf(platform) !== -1) {
os = 'Windows';
} else if (/Android/.test(userAgent)) {
os = 'Android';
} else if (!os && /Linux/.test(platform)) {
os = 'Linux';
}
return os;
}
alert(getOS());
This code works properly. I tested it on all the OS: MacOS, iOS, Android, Windows and UNIX, but I can't guarantee 100% sure.
Debugging can be tough 😂
. pic.twitter.com/UtkN6iuRBG
Reference
이 문제에 관하여(JavaScript의 웹 페이지에서 OS 세부 정보를 가져옵니다. 👷♂️ 답: JS로 MacOS, iOS, Windows, Android 및 Linux OS 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vaibhavkhulbe/get-os-details-from-the-webpage-in-javascript-b07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)