有谁知道如何在移动浏览器中选择桌面视图选项会影响CSS媒体查询和Javascript?Desktop View/View Desktop Site实际上做了什么?
我正在制作一个网站,只是为了移动用户。当我使用股票Android浏览器时选择“桌面视图”时,它会破坏网站。我想有效地忽略桌面视图设置。
谢谢
有谁知道如何在移动浏览器中选择桌面视图选项会影响CSS媒体查询和Javascript?Desktop View/View Desktop Site实际上做了什么?
我正在制作一个网站,只是为了移动用户。当我使用股票Android浏览器时选择“桌面视图”时,它会破坏网站。我想有效地忽略桌面视图设置。
谢谢
它不一定会更改用户代理,但会为该用户的网站设置会话变量,因此如果他们提出请求,它将跳过用户代理检查并直接返回桌面网站。
<?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");
}
}
当您选择从Android浏览器菜单“查看网页版”我的意思。我认为用户Kraz在这种情况下是正确的 - 这一切都是由navigator.userAgent的价值的差异解释。我不认为它必然涉及到任何服务器端,或会话变量。但是,你的解决方案将是在某些情况下 – tarling
抱歉必须错过了你的第二段/句话再恰当:机器人。漫长的一天.. –
的“桌面视图”股票Android浏览器只是改变发送到服务器的用户代理(UA)字符串。如果没有选项中选择一个典型的UA字符串将类似于以下内容:
的Mozilla/5.0(Linux的; U; Android的{OS版本}; EN-GB; {设备型号信息})为AppleWebKit /534.30(KHTML,例如Gecko)版本/ 4.0移动版Safari/534.30
随着 '桌面视图' 选项启用此变为类似于:
的Mozilla/5.0(X11,X8的Linux 6_64)为AppleWebKit/534.24(KHTML,像壁虎) 的Chrome/Safari浏览器11.0.696.34/534.24
正如你所看到的第一个例子中明确包括Word Mobile中,它也告诉我们,这是一个Android操作系统。第二个示例通过忽略Mobile这个词来批判性地模拟“全浏览器”的用户代理字符串。
更重要的是要具体回答两个部分的原始问题;
此选项如何影响CSS媒体查询?
它没有。 CSS媒体查询本身不受发送到服务器的UA字符串的影响。通常,当我们谈论媒体查询时,我们正在参考设备的屏幕大小/分辨率/方向,所有这些都不受“桌面视图”选项的影响。如果服务器根据提供的UA字符串提供不同的响应,则只会更改该站点的CSS行为。
此选项如何影响JavaScript?
如果您(或您使用的第三方库)使用Navigator对象修改基于浏览器版本的行为,则会影响javascript。
我相信这个选项只会改变用户代理。 – Kraz
谢谢克拉兹,我确信你是对的 - 请你可以提供这个答案,以便我可以将其标记为正确。 – tarling
当然,也感谢:) – Kraz