Bagaimana untuk Mengesan Versi Penyemak Imbas dan Sistem Pengendalian Menggunakan JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-17 19:03:03
asal
842 orang telah melayarinya

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

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>"
);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan