7

在来自用户代理的 http 标头中指定“屏幕大小”似乎没有真正的标准。

例如,下面的两个标题:

X-UP-devcap-screenpixels: 320x240

或者

UA-pixels: 320x240

是两个常用的标头。第二个主要由 Windows Mobile 设备使用。X-UP看起来像是来自 UP 浏览器网关。

另一种选择是

X-Screen-Width: 320
X-Screen-Height: 240

X-Screen-Width 可能是一个向上的标题。

我的问题是:

未来我们的“转码器”采用什么好的标准?它并不是真正的完整网络浏览器,但主要用于有限的网站。但它应该是Opera Mini/GWT等采用的标准。

Opera Mini 和 Google Web Transcoder 都不会通过其 HTTP 请求发送此信息。我猜他们希望网站在服务器端查找手机型号,从而查找屏幕宽度和高度。

我实际上发现了这个名为 HTTP Header Field Registrations 的RFC 4229 。它有点过时了,并且是为修复做出贡献的使命。

如果我必须查看该领域最常用的东西,我可能最终会选择“UA-Pixels”。

更多参考资料

  • 某些设备(主要还是 Windows Mobile)在用户代理标头中具有 320x240 值
4

3 回答 3

4

它比你想象的还要糟糕。

UA 像素:320x240

往往是谎言。在 IEMobile 版本 <8 (Windows Mobile <6.1.4) 上,具有 640x480 像素的设备仍将自身报告为 320x240。此外,在大多数版本的 IEMobile 中,视图可能会缩放到一定程度,因此您必须点击的设计大小与 UA 像素大小无关。

在 IEMobile 8 之前,流动布局的机会是有限的。然而,在 WinMobile 6.5 上的 IEMobile 8 中,无论您喜欢与否,您都可以获得 XGA 分辨率,缩小。哦,没有办法从标题中嗅出 IEM8-on-6.5 与 IEM8-on-6.1。

我不确定您的应用程序的确切目的是什么,但如果您的目标包括 IEMobile 的可怕恐怖,那么输出完全呈现屏幕大小的 HTML/CSS 几乎是不可能的。

于 2009-08-31T13:15:52.707 回答
0

以下是常见的屏幕分辨率标题列表:

X-UP-devcap-screenpixels

或者

UA-pixels

或者

X-JPHONE-DISPLAY

我查看了 Google 为他们的 Mobile Adsense 提供的代码片段,这些是他们目前检查的三个。

于 2011-10-04T07:11:11.827 回答
0

偶然发现了这个问题,并认为我会添加一种目前在大约四分之三的浏览器中实现的方法。

客户提示

在撰写本文时,客户端提示在浏览器中的可用性约为 75%,因此显然不能全面依赖它们,但对于支持它们的浏览器来说,它们可能很有用。

您无法获得屏幕高度,但可以获得宽度和设备像素比 (DPR)。

要使用客户端提示,您需要添加<meta>标签

<meta http-equiv="Accept-CH" content="DPR, Width, Viewport-Width, Downlink">

或发送标题

Accept-CH: DPR, Width, Viewport-Width, Downlink.

然后,支持此功能的浏览器将在每个后续请求中发送其响应。

对...有用?

图片!

您可以依赖<picture>元素并以不同的宽度和分辨率提供图像的所有不同变体,或者您可以使用客户端提示动态提供正确的图像大小(和格式)

GET myimage.jpg
DPR: 2
Viewport-Width: 1024
Accept: image/webp,image/*,*/*;q=0.8

然后,我们可以动态地提供正确尺寸的图像和可能的最佳格式。

使用width标题,您甚至可以根据桌面或移动设备决定要发送哪种样式表变体(尽管您必须非常小心,这可能不建议这样做,只是了解如何将其用于动态资源服务)。

于 2020-10-30T14:59:27.460 回答