设置浏览器的媒体类型

Posted

技术标签:

【中文标题】设置浏览器的媒体类型【英文标题】:Setting a browser's media type 【发布时间】:2010-11-16 15:51:04 【问题描述】:

这听起来像是一个愚蠢的问题(对我来说),但我已经搜索过,但找不到任何似乎在谈论它的地方。代理集的媒体类型在哪里 - 它是由浏览器(或其他)硬编码的还是可配置的(特别是 IE)?

我问是因为我正在编写一个主要由普通 PC 使用的网络应用程序,但也会有一些上网本使用它。然而,这些上网本将运行 XP,并且似乎被检测为普通的 Windows 浏览器,但是对于某些页面,我希望它们使用不同的 CSS(主要用于较大的字体类型),所以我希望将它们设置为手持式设备,然后在我的 CSS 上点击相应页面(拥有它们的用户也将从普通 PC 登录,因此无法选择按用户检测类型)。

或者有更好/更正确的方法吗?

【问题讨论】:

对于任何查看此问题的人来说,这似乎无法完成。我不想查看屏幕大小,因为这意味着我必须编写条件来加载正确的 CSS 表,而媒体类型会自动处理这个问题。我最终在用户代理中添加了一个条目 【参考方案1】:

通常,基于用户代理的页面服务由 Web 应用程序 Web 服务器处理,或者很少由某些 javascript 处理。如果您列出您正在使用的语言/框架,可以提供更多帮助。

更改客户端上的用户代理屏幕通常不是一个好主意。将您的 CSS 设计为可扩展并允许缩放。

【讨论】:

【参考方案2】:

最简单的方法是使用 Javascript 检测用户的屏幕分辨率:screen.widthscreen.height。如果它太小,请采取适当的措施,例如改用您的移动样式表。没有办法检测一个人正在使用的确切设备。

【讨论】:

【参考方案3】:

HTTP 标头的“用户代理”是浏览器“告诉”网络服务器它是什么类型的浏览器的方式。它也可以包含操作系统和版本。在大多数通常情况下,这些值是正确的指示。我们可以利用这些信息在服务器端生成适合浏览器(即移动设备、IE6 等)的 html/css。

一些框架,例如ASP.NET 具有某种形式的浏览器功能来“适应”html 输出(不过我不相信)。

我想不出更好的办法。对于屏幕大小检测,javascript 检测应该可以很好地工作,但是除非您有某种可以以 AJAX 方式呈现输出的实现形式,否则在布局和字体大小方面并没有给您太多帮助。可能很复杂。

这里没有太多的答案,只是希望它可以促进更多的想法。

【讨论】:

【参考方案4】:

我在 ASP.NET 中工作,使 CSS 可缩放不是一种选择 - 大多数屏幕照原样都可以,但是对于一个屏幕,上网本上的布局需要不同,所以在这种情况下,用户将不得不放大一个页面,然后再放大其他页面,显然,这不是一个好的解决方案(加上实际的 CSS 会有所不同,而不仅仅是缩放级别 - 只有某些元素'例如,字体将被放大)。问题是客户端将被视为“普通”Windows客户端 - Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;OfficeLiveConnector.1.4;OfficeLivePatch .1.3) (如果有人想知道,三叉戟部分只是 IE8,如果它伪装成 IE7,它就是 IE8)所以我需要改变客户展示自己的方式。最简单(理论上)的方法是将它们配置为不同的媒体类型,这样它们就会自动加载正确的 CSS 而无需服务器端操作,但它只是知道如何执行此操作。

同样,理论上,如果这不可能,我会感到非常惊讶,或者除非您手头有实际可用的设备,否则正确测试不同的媒体类型将成为一场噩梦,但在网上看起来似乎是这种情况(肯定有人会在浏览器的某处放置一个选项,您可以在其中设置它支持的媒体类型????)。

【讨论】:

【参考方案5】:

有点旧,但您可以使用 css 媒体类型

http://www.w3schools.com/css/css_mediatypes.asp

【讨论】:

以上是关于设置浏览器的媒体类型的主要内容,如果未能解决你的问题,请参考以下文章

@meda媒体查询

移动开发—媒体查询(Media Query)

0080 媒体查询media引入资源

@support浏览器兼容判断 以及 @media媒体查询

使用媒体查询更改变量

Amazon Kindle Web 浏览器的 CSS 媒体查询