2011-09-29 54 views
6

我一直在做一些研究,我想我已经知道了答案,但我想知道是否有任何方法可以获得设备的屏幕尺寸和像素密度,而无需使用JavaScript或依靠CSS3媒体查询。检测服务器端的屏幕大小和像素密度?

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

到目前为止,我还没有发现任何说这甚至可能,但我认为嘿,为什么不问?

回答

0

Ruby运行在服务器端 - 无需从客户端获取信息,它无法了解任何客户端功能。

+0

这就是我的想法。我想现在想到漏洞。 – dougoftheabaci

+1

我不确定有没有 - 除非客户告诉你,我不知道如何,这意味着通过JavaScript(可能)获取一些信息。你*可能*能够通过用户代理收集*少量的信息,但这基本上是无用的。 –

+0

有关downvotes的评论,赞赏,特别是在正确的答案。确定屏幕尺寸和密度必然依赖于客户端信息,这是无可争辩的。获取*准确*信息很困难 –

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等)通过服务器给出信息。当然,你需要一个设备信息表来引用。

对于移动设备,它变得更加简单。如果用户代理是用于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

因此,您正在任何一个,3-4 MBP和两个具有任意监视器大小的桌面上运行OSX?除非您运行iOS设备,否则在移动设备上并不容易。咩。 –

2

的东西,这是不可能的,它看起来像Mobvious做一个体面的工作:

Mobvious检测是否您的应用程序/网站是由一个 电话访问,或片剂,或由个人计算机。然后,您可以在整个应用中使用 这一信息。 (例如,分叉您的前端代码 关于设备类型。有一个Ruby on Rails的插件, 可以帮助你做到这一点。)

https://github.com/jistr/mobvious

+1

Mobvious不看屏幕大小,只看用户代理,URL或cookie。 –

0

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

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

流量来源 - 引荐,指域,登陆页面,搜索
关键字位置 - 国家,地区和城市的技术 - 浏览器,操作系统, 和设备类型
UTM参数 - 来源,媒介,字词,内容 活动

相关问题