检测服务器端的屏幕尺寸和像素密度?

时间:2011-09-29 11:40:04

标签: ruby-on-rails ruby device-detection

我一直在做一些研究,我想我已经知道了答案,但我想知道是否有任何方法可以在不使用javascript或依赖CSS3媒体的情况下获得设备的屏幕尺寸和像素密度查询。

基本上,我正在研究如何获得屏幕分辨率和像素密度,以便服务器可以决定在URI请求中向服务器提供哪个图像。

到目前为止,我还没有找到任何说这甚至可能的东西,但我觉得嘿,为什么不问?

5 个答案:

答案 0 :(得分:9)

我完全同意上述正确答案。实际上,这个答案在许多情况下是正确的......但理论上并非如此。通常,对Web服务器的请求包含User-Agent字段,理论上,该字段可用于识别有关设备屏幕分辨率和属性的信息。

Web请求不会先通过客户端。它们传递给服务器,然后服务器向客户端提供页面,以便服务器首先获取请求...例如,Ruby on Rails通过动作控制器接收请求到资源,然后将页面提供给响应。

查看示例UA解析器,例如:https://github.com/visionmedia/user-agent

我的计算机发送的示例用户代理是:

  User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like  enter code here`Gecko) Chrome/17.0.963.83 Safari/535.11

我认为很有可能很好地猜测我的屏幕分辨率(DPI等)是通过服务器提供的。当然,您需要一个设备信息表来引用。

对于移动设备,它变得更加容易。如果User-Agent是iPad的移动游戏:

  Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML,   like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10

您可以非常确定地了解服务器上的屏幕分辨率。您甚至可以通过该信息了解浏览器的高度和宽度。我怀疑Android和Win Mo等许多移动设备也是如此。

总而言之,我同意这样做是不切实际的,但我也不同意。

我相信Facebook已经开展了一个主要的项目编目设备和屏幕分辨率,并使其成为开源,因为他们在创建Facebook移动应用时面临类似的问题,例如他们必须对所有移动浏览器渲染器之间的所有差异进行编目,以便他们可以根据每个案例定制客户端应用程序。也许该项目可能有必要的信息来做到这一点......理论上。

答案 1 :(得分:2)

对于一些不可能的事情,看起来Mobvious做得不错:

  

Mobvious检测您的应用/网站是否被访问   电话,平板电脑或个人电脑。然后你可以使用   整个应用中的这些信息。 (例如,分叉您的前端代码   关于设备类型。 Ruby on Rails有一个插件   帮助你。)

https://github.com/jistr/mobvious

答案 2 :(得分:0)

Ruby在服务器端运行 - 没有从客户端获取信息,它无法知道任何客户端功能。

答案 3 :(得分:0)

您可以使用Ahoy。 current_visit方法包含以下信息。

  

当有人访问您的网站时,Ahoy创建了很多访问   有用的信息。

     

流量来源 - 引荐来源,引荐域名,着陆页,搜索
  关键字位置 - 国家,地区和城市技术 - 浏览器,操作系统,   和设备类型
  utm参数 - 来源,媒介,期限,内容,   运动

答案 4 :(得分:0)

不确定构建的现实程度如何,但是您可以构建一个数据库,该数据库将可以从服务器端的用户代理获取的特定设备类型映射到已知的屏幕尺寸。它仍然不允许窗口大小之类的东西。