2014-08-28 76 views

回答

16

我几年前正在研究这个问题。总之,你不能以100%的可靠性来做到这一点。似乎有通常用于提供“最好的猜测”方法2:

1.用户代理检测 这是你检查客户端是什么自称是。 例如

if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { 
    // is mobile.. 
} 

这并不完美,因为我认为这个属性被偶然或以其他方式修改相当容易。另外,这个清单在2年/ 2周/ 2天内仍然是准确的!

2.使用屏幕宽度 正如你可以想像,更务实的态度 - 让您以满足客户的已知的物理性能。例如

if(screen.width <= 480) {  
    // is mobile.. 
} 

然而,这是不理想的,因为相关的现代设备越来越高的像素密度给你一个误导性的结果:出现,你有更多的“房间”比你实际做。

如果有人有任何更好的想法来强大地辨别桌面和设备之间,请评论! :)

+0

只是为了澄清:“更高的像素密度”意味着DPI更高,因此像素更小并且紧凑在一起,这可能会导致移动设备上的主要可用性问题,即使设备具有“笔记本电脑分辨率“,比如1024像素宽。正确? – Gimby 2014-08-28 07:52:37

+0

确切地说:例如平板电脑等设备可能会报告它是“1024像素宽”,并欺骗像我这样的“传统”网络开发人员,认为这意味着它具有典型办公室显示器的宽度,这也可能报告为1024px宽。 – ne1410s 2014-08-28 18:30:00

相关问题