有谁知道在移动浏览器中选择桌面视图选项会如何影响 CSS 媒体查询和 Javascript?
我正在制作一个仅供移动用户使用的网站。当我在使用股票 Android 浏览器时选择“桌面视图”时,它会破坏网站。我想有效地忽略桌面视图设置。
谢谢
有谁知道在移动浏览器中选择桌面视图选项会如何影响 CSS 媒体查询和 Javascript?
我正在制作一个仅供移动用户使用的网站。当我在使用股票 Android 浏览器时选择“桌面视图”时,它会破坏网站。我想有效地忽略桌面视图设置。
谢谢
我相信这个选项只会改变用户代理。
普通 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。
它不一定会更改用户代理,但它会为该用户的网站设置一个会话变量,因此如果他们提出请求,它将跳过用户代理检查并简单地返回桌面网站。
示例代码:
<?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");
}
}