Pertanyaan Cara terbaik untuk mendeteksi komputer Mac OS X atau Windows dengan JavaScript atau jQuery


Jadi saya mencoba untuk memindahkan tombol "tutup" ke sisi kiri ketika pengguna berada di Mac dan sisi kanan ketika pengguna berada di PC. Sekarang saya melakukannya dengan memeriksa agen pengguna, tetapi bisa terlalu mudah untuk mendeteksi OS yang andal. Apakah ada cara yang pasti untuk mendeteksi apakah OS tempat browser berjalan adalah Mac OS X atau Windows? Jika tidak, apa yang lebih baik daripada sniffing agen pengguna?


75
2018-05-10 05:26


asal


Jawaban:


Itu window.navigator.platform properti tidak dipalsukan ketika string penggunaAgent diubah. Saya menguji pada Mac saya jika saya mengubah penggunaAgen ke iPhone atau Chrome Windows, navigator.platform tetap MacIntel.

navigator.platform is not spoofed when the userAgent string is changed

Properti juga hanya-baca

navigator.platform is read-only


Saya bisa datang dengan tabel berikut

Komputer Mac

Mac68K  Sistem Macintosh 68K.
MacPPC  Sistem Macintosh PowerPC.
MacIntel  Sistem Intel Macintosh. 

Perangkat iOS

iPhone  iPhone.
iPod  iPod Touch.
iPad  iPad. 


Mac modern kembali navigator.platform == "MacIntel" tetapi untuk memberikan beberapa "bukti masa depan" tidak menggunakan pencocokan tepat, semoga mereka akan berubah menjadi sesuatu seperti MacARM atau MacQuantum di masa depan.

var isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;

Untuk memasukkan iOS yang juga menggunakan "sisi kiri"

var isMacLike = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i)?true:false;
var isIOS = navigator.platform.match(/(iPhone|iPod|iPad)/i)?true:false;

var is_OSX = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;
var is_iOS = navigator.platform.match(/(iPhone|iPod|iPad)/i) ? true : false;

var is_Mac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
var is_iPhone = navigator.platform == "iPhone";
var is_iPod = navigator.platform == "iPod";
var is_iPad = navigator.platform == "iPad";

/* Output */
var out = document.getElementById('out');
if (!is_OSX) out.innerHTML += "This NOT a Mac or an iOS Device!";
if (is_Mac) out.innerHTML += "This is a Mac Computer!\n";
if (is_iOS) out.innerHTML += "You're using an iOS Device!\n";
if (is_iPhone) out.innerHTML += "This is an iPhone!";
if (is_iPod) out.innerHTML += "This is an iPod Touch!";
if (is_iPad) out.innerHTML += "This is an iPad!";
out.innerHTML += "\nPlatform: " + navigator.platform;
<pre id="out"></pre>


Karena kebanyakan O.S. gunakan tombol tutup di sebelah kanan, Anda dapat memindahkan tombol tutup ke kiri saat pengguna menggunakan MacLike O.S., jika tidak, tidak masalah jika Anda meletakkannya di sisi yang paling umum, sebelah kanan.

setTimeout(test, 1000); //delay for demonstration

function test() {

  var mac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;

  if (mac) {
    document.getElementById('close').classList.add("left");
  }
}
#window {
  position: absolute;
  margin: 1em;
  width: 300px;
  padding: 10px;
  border: 1px solid gray;
  background-color: #DDD;
  text-align: center;
  box-shadow: 0px 1px 3px #000;
}
#close {
  position: absolute;
  top: 0px;
  right: 0px;
  width: 22px;
  height: 22px;
  margin: -12px;
  box-shadow: 0px 1px 3px #000;
  background-color: #000;
  border: 2px solid #FFF;
  border-radius: 22px;
  color: #FFF;
  text-align: center;
  font: 14px"Comic Sans MS", Monaco;
}
#close.left{
  left: 0px;
}
<div id="window">
  <div id="close">x</div>
  <p>Hello!</p>
  <p>If the "close button" change to the left side</p>
  <p>you're on a Mac like system!</p>
</div>

http://www.nczonline.net/blog/2007/12/17/don-t-forget-navigator-platform/


146
2017-08-01 03:12



Sesederhana itu:

function isMacintosh() {
  return navigator.platform.indexOf('Mac') > -1
}

function isWindows() {
  return navigator.platform.indexOf('Win') > -1
}

Anda dapat melakukan hal-hal lucu lalu seperti:

var isMac = isMacintosh();
var isPC = !isMacintosh();

30
2018-01-09 14:33



Apa ini yang kamu cari? Jika tidak, beri tahu saya dan saya akan menghapus postingan ini.

Coba plugin jQuery ini: http://archive.plugins.jquery.com/project/client-detect

Demo:  http://www.stoimen.com/jquery.client.plugin/

Ini didasarkan pada quirksmode BrowserDetect bungkus untuk jQuery browser / os detection plugin.

Untuk pembaca yang tertarik:
http://www.stoimen.com/blog/2009/07/16/jquery-browser-and-os-detection-plugin/
http://www.quirksmode.org/js/support.html

Dan lebih banyak kode di sekitar plugin berada di sini: http://www.stoimen.com/jquery.client.plugin/jquery.client.js


5
2018-05-10 05:36



Yah, Windows dan Mac bukan satu-satunya platform di luar sana. Saya menulis ini detect-os komponen yang menggunakan teknik yang sama dan memeriksa lebih banyak kasus tepi, tetapi juga untuk platform lain, seperti Linux, Android, iOS ...

Jangan ragu untuk mengimpor dan menggunakannya seperti yang ditunjukkan dalam contoh berikut:

detectOs.isAndroid() => true/false
detectOs.isIos() => true/false
detectOs.isWindows() => true/false
detectOs.isBlackBerry() => true/false
detectOs.isMac() => true/false
detectOs.isLinux() => true/false
detectOs.get() => iOS/Android/Windows/Linux/Mac/BlackBerry/Unknown

0
2018-06-06 14:01