因此,当用户使用 Mac 时,我尝试将“关闭”按钮移至左侧,而当用户使用 PC 时,将其移至右侧。现在我通过检查用户代理来做到这一点,但是对于可靠的操作系统检测来说,它很容易被欺骗。有没有一种可靠的方法来检测运行浏览器的操作系统是 Mac OS X 还是 Windows?如果不是,有什么比用户代理嗅探更好的?
最佳答案
window.navigator.platform当更改 userAgent 字符串时,属性不会被欺骗。 如果我将 userAgent 更改为 iPhone 或 Chrome Windows,我在我的 Mac 上进行了测试,navigator.platform 仍然是 MacIntel。
该属性也是只读
我可以想出下表
Mac Computers
Mac68K
Macintosh 68K system.
MacPPC
Macintosh PowerPC system.
MacIntel
Macintosh Intel system.
MacIntel
Apple Silicon (ARM)iOS 设备
iPhone
iPhone.
iPod
iPod Touch.
iPad
iPad.
现代 macs 返回 navigator.platform == "MacIntel"
但为了提供一些“ future 证明”,不要使用精确匹配,希望它们会更改为类似 MacARM
或将来的 MacQuantum
。
var isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
包括也使用“左侧”的 iOS
var isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
var isIOS = /(iPhone|iPod|iPad)/i.test(navigator.platform);
var is_OSX = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
var is_iOS = /(iPhone|iPod|iPad)/i.test(navigator.platform);
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.S.使用右侧的关闭按钮,当用户使用 MacLike 操作系统时,您只需将关闭按钮移到左侧即可,否则,如果将其放在最常见的一侧,即右侧,则没有问题。
setTimeout(test, 1000); //delay for demonstration
function test() {
var mac = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
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/
关于javascript - 使用 JavaScript 或 jQuery 检测 Mac OS X 或 Windows 计算机的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527983/