Soru JavaScript veya jQuery ile Mac OS X veya Windows bilgisayarları tespit etmenin en iyi yolu


Bu yüzden kullanıcı Mac’te ve kullanıcı PC’de iken sağ tarafta sol tarafa doğru "kapat" tuşunu kaldırmaya çalışıyorum. Şimdi kullanıcı aracısını inceleyerek yapıyorum ama güvenilir işletim sistemi algılaması için çok kolay bir şekilde sahte olabilir. Tarayıcının çalıştığı işletim sisteminin Mac OS X mi, Windows mu olduğunu tespit etmenin kesin bir yolu var mı? Değilse, kullanıcı aracısı koklamadan daha iyi olan nedir?


76
2018-05-10 05:26


Menşei


Kullanıcı kullanıcı arayüzünü manipüle ederse, onun problemi değil mi? Acı çektiğinde endişelenirim sen onların geçersiz bir alıcısına sahip olmaları için (örneğin, sahip olmalarını istemediğiniz bir şeye eriştiğinde), ama bunun gibi bir şey için, neden stres yapıyorsunuz? Kendilerini yürüyerek vurmalarına ve sonuçlarla başa çıkmalarına izin verin - sırtınızda ter yok, dostum. - Mahmoud Al-Qudsi
iyi, bir cevaptan daha çok bir ipucu gibi. IE'yi koşullu yorumlar ile tespit edebilirsiniz. Bu pencere tespit cephaneliğine +1'dir. ancak IE başka bir işletim sisteminde (Linux'ta olduğu gibi) bir emülatörde çalıştırılmışsa bu başarısız olur. Bu arada linux'a ne dersin? - Joseph
@ MahmoudAl-Qudsi Sahtecilik yapmadan bile, mobil Firefox genellikle Safari gibi davranıyor, Opera genellikle bazı sürümlerde firefox gibi davranıyor. Sahteciliğe uğramadan, kullanıcı aracısı hala ÇOK güvenilmezdir. - alt
Olası kopya: stackoverflow.com/q/7044944/55209 - Artem Koshelev
Ancak bu sorunun cevabı sadece "kullanıcı aracıları" dır. - alt


Cevaplar:


window.navigator.platform userAgent dizesi değiştirildiğinde özellik sahte değil. UserAgent'ı iPhone veya Chrome Windows'a değiştirirsem Mac'imde test ettim. navigator.platform MacIntel kalır.

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

Mülkiyet de Sadece oku

navigator.platform is read-only


Aşağıdaki tablo ile gelebilirdim

Mac Bilgisayarları

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

iOS Cihazları

iPhone  iPhone.
iPod  ipod touch.
iPad  iPad. 


Modern maclar geri döndü navigator.platform == "MacIntel" ama bazı "gelecek kanıt" vermek için tam eşleme kullanmayın, umarım onlar gibi bir şeye dönüşeceklerdir MacARM veya MacQuantum gelecekte.

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

"Sol taraf" da kullanılan iOS'u dahil etmek için

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>


Çoğu O.S. Sağ taraftaki kapat düğmesini kullanarak, kullanıcı MacLike O.S. cihazındayken sol tuşunu sola hareket ettirebilirsiniz, aksi takdirde en yaygın tarafa koyarsanız sorun olmaz.

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/


147
2017-08-01 03:12



navigator.platform kullanımdan kaldırılmış ve kullanılmamalıdır: developer.mozilla.org/en-US/docs/Web/API/NavigatorID/platform - advncd
@advncd, bu mülkün kullanımdan kaldırıldığını söylüyor mu? Bu bilgiyi hiçbir yerde bulamadım ancak SOf'taki yorumlarda. - EdMelo
@EdMelo, bazılarının son zamanlarda 'kullanımdan kaldırılmış' işaretini kaldırmış gibi görünüyor: developer.mozilla.org/en-US/docs/Web/API/NavigatorID/... doğru olandan emin değilim. - advncd
@ Vitim.us ayrıntılı cevap için çok teşekkürler, gerçekten benim günümü kurtardınız :) - vivekkupadhyay
Kullanımdan kaldırılmadı. developer.mozilla.org/en-US/docs/Web/API/NavigatorID/... - Vitim.us


Bu kadar basit:

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

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

Sonra komik şeyler yapabilirsin.

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

30
2018-01-09 14:33



Eh, bu kapakları iki işletim sistemleri. Linux, BSD, Android, Palm, Sony Playstation, vb. İçeren daha kapsamlı (ama muhtemelen tamamlanmamış) bir liste. stackoverflow.com/questions/19877924/... - Michael Scheper
Daha fazla işletim sistemini kapsamak istiyorsanız, o zaman bir kütüphane gibi Platform.js: github.com/bestiejs/platform.js - Benny Neugebauer


Aradığınız bu mu? Aksi halde, haber ver ve bu gönderiyi kaldıracağım.

Bu jQuery eklentisini deneyin: http://archive.plugins.jquery.com/project/client-detect

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

Bu, jQuery tarayıcısı / os algılama eklentisi için bir sargının bulunduğu Quirksmode BrowserDetect'i temel alır.

Keskin okuyucular için:
http://www.stoimen.com/blog/2009/07/16/jquery-browser-and-os-detection-plugin/
http://www.quirksmode.org/js/support.html

Eklentinin çevresindeki daha fazla kod burada bulunur: http://www.stoimen.com/jquery.client.plugin/jquery.client.js


5
2018-05-10 05:36



KANKA! Kullanıcı aracımı aldattım ve hala Mac için Safari'de beni buldu! Teşekkürler BRUV. - alt
@JacksonGariety Hayır endişeleri bruv :)) daha fazla detay okumak burada tüm kodu yeniden gönderme var :) stoimen.com/jquery.client.plugin/jquery.client.js Güzel bir brosniac :) Şerefe! - Tats_innit
@Tats_innit - Nasıl çalışır, biliyor musunuz? Gerçekten meraklı! - Derek 朕會功夫
Gerçekten aradığım cevap değil. Bu mümkün mü? - alt
@JacksonGariety cevabımı denediniz mi? - Vitim.us


Eh, Windows ve Mac orada tek platform değil. bunu ben yazdım -Os algılamak Aynı teknikleri kullanan ve daha fazla kenar durumu için kontrol eden, aynı zamanda Linux, Android, iOS gibi diğer platformlar için de ...

İçe aktarmayı ve aşağıdaki örneklerde gösterildiği gibi kullanmaktan çekinmeyin:

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