5

有谁知道在移动浏览器中选择桌面视图选项会如何影响 CSS 媒体查询和 Javascript?

我正在制作一个仅供移动用户使用的网站。当我在使用股票 Android 浏览器时选择“桌面视图”时,它会破坏网站。我想有效地忽略桌面视图设置。

谢谢

4

3 回答 3

4

我相信这个选项只会改变用户代理。

于 2012-10-12T14:25:50.743 回答
3

普通 android 浏览器中的“桌面视图”只是更改发送到服务器的用户代理 (UA) 字符串。如果不选择该选项,典型的 UA 字符串将类似于以下内容:

Mozilla/5.0 (Linux; U; Android {OS Version} ; en-gb; {Device Model Information} ) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

启用“桌面视图”选项后,此更改类似于:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24

如您所见,第一个示例明确包含“Mobile”一词,它还告诉我们它是一个 Android 操作系统。第二个示例通过省略“Mobile”一词来严格模仿“完整浏览器”的用户代理字符串。

更重要的是,分两部分具体回答原问题;

此选项如何影响 CSS 媒体查询?

它没有。CSS 媒体查询本身不受发送到服务器的 UA 字符串的影响。通常,当我们谈论媒体查询时,我们会参考设备的屏幕尺寸/分辨率/方向,所有这些都不受“桌面视图”选项的影响。只有当服务器基于提供的 UA 字符串提供不同的响应时,站点的 CSS 行为才会改变。

此选项如何影响 javascript?

如果您(或您使用的第三方库)使用Navigator对象来修改基于浏览器版本的行为,这会影响 javascript。

于 2015-05-03T10:31:06.363 回答
0

它不一定会更改用户代理,但它会为该用户的网站设置一个会话变量,因此如果他们提出请求,它将跳过用户代理检查并简单地返回桌面网站。

示例代码

<?php
//See if the browser is a mobile browser
// If it's mobile browser see if the user prefers desktop version
// IF the user does not the foward to mobile website.

$browser = $_SERVER['HTTP_USER_AGENT'];

if(preg_match('/iPhone/i',$browser)) { $iphone = "true"; }
if(preg_match('/Android/i',$browser)) { $android = "true"; }


if($iphone == true || $android == true) {

    session_start();
    if($_SESSION['version'] != "desktop") {

        header("location: http://tuts.pinehead.tv/jqmobile/mobile.php");

    }


}
于 2012-10-12T14:36:36.243 回答