Cara Mengesan Versi Penyemak Imbas dan Sistem Pengendalian Menggunakan JavaScript
Isu:
Apabila menggunakan kod yang disediakan, pengesanan penyemak imbas berfungsi dalam Chrome dan Mozilla tetapi gagal dalam IE6. Keperluan adalah untuk mengekstrak versi penyemak imbas secara khusus, seperti "Firefox/12.0," daripada rentetan ejen pengguna.
Penyelesaian:
Untuk mengesan versi penyemak imbas dan sistem pengendalian menggunakan JavaScript, pendekatan yang lebih komprehensif diperlukan. Berikut ialah skrip yang menangani isu ini:
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>" );
Skrip yang dikemas kini ini menyediakan kaedah yang lebih mantap untuk mengesan versi penyemak imbas dan sistem pengendalian dengan menganalisis rentetan ejen pengguna dengan teliti. Ia mengendalikan jenis dan versi penyemak imbas yang berbeza, termasuk Internet Explorer 6. Dengan menghuraikan rentetan ejen pengguna, skrip ini mengekstrak versi penyemak imbas yang dikehendaki dengan tepat, seperti "Firefox/12.0", sambil turut menyediakan maklumat terperinci tentang penyemak imbas dan sistem.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Versi Penyemak Imbas dan Sistem Pengendalian Menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!