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