>웹 프론트엔드 >JS 튜토리얼 >JavaScript를 사용하여 브라우저 버전과 운영 체제를 안정적으로 감지하는 방법은 무엇입니까?

JavaScript를 사용하여 브라우저 버전과 운영 체제를 안정적으로 감지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-17 19:03:03907검색

How to Reliably Detect Browser Version and Operating System Using JavaScript?

JavaScript를 사용하여 브라우저 버전 및 운영 체제를 확인하는 방법

문제:

사용 시 제공된 코드를 사용하면 브라우저 감지가 Chrome 및 Mozilla에서 작동하지만 IE6에서는 실패합니다. 요구 사항은 사용자 에이전트 문자열에서 "Firefox/12.0"과 같은 브라우저 버전을 구체적으로 추출하는 것입니다.

해결책:

브라우저 버전과 JavaScript를 사용하는 운영 체제에서는 보다 포괄적인 접근 방식이 필요합니다. 다음은 문제를 해결하는 스크립트입니다.

var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName = navigator.appName;
var fullVersion = '' + parseFloat(navigator.appVersion);
var majorVersion = parseInt(navigator.appVersion, 10);
var nameOffset, verOffset, ix;

// Determine browser name and version based on user agent string
if ((verOffset = nAgt.indexOf("OPR")) != -1) {
  // Opera
  browserName = "Opera";
  fullVersion = nAgt.substring(verOffset + 4);
  if ((verOffset = nAgt.indexOf("Version")) != -1) {
    fullVersion = nAgt.substring(verOffset + 8);
  }
} else if ((verOffset = nAgt.indexOf("Edg")) != -1) {
  // Microsoft Edge
  browserName = "Microsoft Edge";
  fullVersion = nAgt.substring(verOffset + 4);
} else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
  // Microsoft Internet Explorer
  browserName = "Microsoft Internet Explorer";
  fullVersion = nAgt.substring(verOffset + 5);
} else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
  // Chrome
  browserName = "Chrome";
  fullVersion = nAgt.substring(verOffset + 7);
} else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
  // Safari
  browserName = "Safari";
  fullVersion = nAgt.substring(verOffset + 7);
  if ((verOffset = nAgt.indexOf("Version")) != -1) {
    fullVersion = nAgt.substring(verOffset + 8);
  }
} else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
  // Firefox
  browserName = "Firefox";
  fullVersion = nAgt.substring(verOffset + 8);
} else if (
  (nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/"))
) {
  browserName = nAgt.substring(nameOffset, verOffset);
  fullVersion = nAgt.substring(verOffset + 1);
  if (browserName.toLowerCase() == browserName.toUpperCase()) {
    browserName = navigator.appName;
  }
}

// Trim fullVersion string to remove semicolon or space if present
if ((ix = fullVersion.indexOf(";")) != -1) {
  fullVersion = fullVersion.substring(0, ix);
}
if ((ix = fullVersion.indexOf(" ")) != -1) {
  fullVersion = fullVersion.substring(0, ix);
}

// Convert fullVersion to number and fall back to navigator.appVersion if conversion fails
majorVersion = parseInt("" + fullVersion, 10);
if (isNaN(majorVersion)) {
  fullVersion = "" + parseFloat(navigator.appVersion);
  majorVersion = parseInt(navigator.appVersion, 10);
}

// Display browser and version information
document.write(
  ""
    + 'Browser name  = '
    + browserName
    + "<br>"
    + 'Full version  = '
    + fullVersion
    + "<br>"
    + 'Major version = '
    + majorVersion
    + "<br>"
    + 'navigator.appName = '
    + navigator.appName
    + "<br>"
    + 'navigator.userAgent = '
    + navigator.userAgent
    + "<br>"
);

이 업데이트된 스크립트는 사용자 에이전트 문자열을 철저하게 분석하여 브라우저 버전과 운영 체제를 감지하는 보다 강력한 방법을 제공합니다. Internet Explorer 6을 포함한 다양한 브라우저 유형 및 버전을 처리합니다. 이 스크립트는 사용자 에이전트 문자열을 구문 분석하여 "Firefox/12.0"과 같은 원하는 브라우저 버전을 정확하게 추출하는 동시에 브라우저 및 시스템에 대한 자세한 정보도 제공합니다.

위 내용은 JavaScript를 사용하여 브라우저 버전과 운영 체제를 안정적으로 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.