2012-10-11 21 views
3

有谁知道如何在移动浏览器中选择桌面视图选项会影响CSS媒体查询和Javascript?Desktop View/View Desktop Site实际上做了什么?

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

谢谢

+0

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

+0

谢谢克拉兹,我确信你是对的 - 请你可以提供这个答案,以便我可以将其标记为正确。 – tarling

+0

当然,也感谢:) – Kraz

回答

2

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

+0

谢谢 - 我所有的网站被打破的方式分别下降到navigator.userAgent的价值是不同的 – tarling

0

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

Example Code

<?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"); 

    } 


} 
+0

当您选择从Android浏览器菜单“查看网页版”我的意思。我认为用户Kraz在这种情况下是正确的 - 这一切都是由navigator.userAgent的价值的差异解释。我不认为它必然涉及到任何服务器端,或会话变量。但是,你的解决方案将是在某些情况下 – tarling

+0

抱歉必须错过了你的第二段/句话再恰当:机器人。漫长的一天.. –

1

的“桌面视图”股票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。

相关问题