ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript を使用してブラウザのバージョンとオペレーティング システムを確実に検出する方法

JavaScript を使用してブラウザのバージョンとオペレーティング システムを確実に検出する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-17 19:03:03843ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。