Вопрос по jquery, javascript – Лучший способ обнаружить компьютеры Mac OS X или Windows с помощью JavaScript или jQuery

85

Поэтому я пытаюсь переместить "закрыть" кнопка слева, когда пользователь находится на Mac, и справа, когда пользователь находится на ПК. Сейчас я делаю это, изучая пользовательский агент, но он может быть слишком легко подделан для надежного обнаружения ОС. Есть ли надежный способ определить, является ли ОС, на которой работает браузер, Mac OS X или Windows? Если нет, то что лучше, чем анализировать пользовательский агент?

Error: User Rate Limit ExceededyouError: User Rate Limit Exceeded Mahmoud Al-Qudsi
Но ответ на этот вопрос - просто «пользовательские агенты». alt
Возможный дубликат:stackoverflow.com/q/7044944/55209 Artem Koshelev
Error: User Rate Limit Exceeded Joseph
Error: User Rate Limit Exceeded alt

Ваш Ответ

3   ответа
36

It's as simple as that:

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

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

Error: User Rate Limit Exceeded

var isMac = isMacintosh();
var isPC = !isMacintosh();
Error: User Rate Limit ExceededPlatform.js: github.com/bestiejs/platform.js
Error: User Rate Limit ExceededtwoError: User Rate Limit Exceededstackoverflow.com/questions/19877924/…
Error: User Rate Limit ExceededisPCError: User Rate Limit ExceededisWindowsError: User Rate Limit ExceededisLinuxError: User Rate Limit Exceeded
Error: User Rate Limit ExceededisPCError: User Rate Limit Exceeded!isMacintosh();Error: User Rate Limit Exceeded
5

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit Exceeded

Demo: Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstoimen.com/jquery.client.plugin/jquery.client.jsError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded alt
Error: User Rate Limit Exceeded alt
159

window.navigator.platformError: User Rate Limit Exceedednavigator.platformError: User Rate Limit Exceeded

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

Error: User Rate Limit Exceededread-only

navigator.platform is read-only


Error: User Rate Limit Exceeded

Mac Computers

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

iOS Devices

iPhone iPhone.
iPod iPod Touch.
iPad iPad.


Error: User Rate Limit Exceedednavigator.platform == "MacIntel"Error: User Rate Limit ExceededMacARMError: User Rate Limit ExceededMacQuantumError: User Rate Limit Exceeded

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

Error: User Rate Limit Exceeded

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>


Error: User Rate Limit Exceeded

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>

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceededstackoverflow.com/questions/2166540/…
Error: User Rate Limit Exceededdeveloper.mozilla.org/en-US/docs/Web/API/NavigatorID/…
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededx?true:falseError: User Rate Limit ExceededBoolean(x).

Похожие вопросы