所以我正在研究我正在做的网站的移动版本 到目前为止,我正在从其主要网站主要网站上提取移动网站内容。
当我在那里学习一些移动网站时,我注意到很多人都有“查看完整网站”的链接。
现在我打算通过检查屏幕宽度等方式,通过主网站标题标签中的.js重定向移动访问者...(不确定它是否是最好的方式,但到目前为止我的大脑最容易)()但建议也欢迎) 但是这样的事情
if (screen.width<=XyZ||screen.height<=XyZ) //example iphone size lets say 320x480
window.location.replace("mobile site link here.")
我再也不知道这是否是最好的方法,但在虚拟测试中,它适用于iPhone,一些朋友Droids和一个Blackberry。但它确实有效。
无论如何,所以我的问题是,如果我这样检查每一页......我怎么可能有一个“查看完整网站”选项?
答案 0 :(得分:8)
使用PHP通过$_SERVER['HTTP_USER_AGENT']
检测移动用户。
JavaScript检测可能不可靠,因为许多移动浏览器不支持JS。
“查看完整站点”将设置cookie以拒绝可检测的移动站点。
使用Cookie来跟踪用户的偏好。
在骨架中
<?php
if (isset($_COOKIE['nomobile'])) {
$style = "normal";
} else {
if (preg_match('/iPhone|(...etc...)/', $_SERVER['HTTP_USER_AGENT'])) {
$style = "mobile";
} else {
$style = "normal";
}
}
对于“查看完整网站”页面:
<a href="fullsite.php">Full Site</a>
fullsite.php
<?php
setcookie('nomobile', 'true');
header('Location: index.php');
?>
答案 1 :(得分:2)
首先,转到以下URL并下载mobile_detect.php文件:
http://code.google.com/p/php-mobile-detect/
接下来,按照页面上的说明操作,将mobile_detect.php上传到根目录, 在索引或主页上插入以下代码:
<?php
@include("Mobile_Detect.php");
$detect = new Mobile_Detect();
if ($detect->isMobile() && isset($_COOKIE['mobile']))
{
$detect = "false";
}
elseif ($detect->isMobile())
{
header("Location:http://www.yourmobiledirectory.com");
}
?>
您会注意到上面的代码正在检查名为“mobile”的Cookie,当移动设备重定向到移动页面时会设置此Cookie。要设置Cookie,请在移动登录页面上插入以下代码:
<?php
setcookie("mobile","m", time()+3600, "/");
?>
答案 2 :(得分:0)
这不是最好的方式,因为移动浏览器通常不支持JS。
您可以使用此功能:
function its_mobile_browser($user_agent = '')
{
if (empty($user_agent))
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (empty($user_agent)) return false;
}
if (stripos($user_agent, 'Explorer')!==false ||
stripos($user_agent, 'Windows')!==false ||
stripos($user_agent, 'Win NT')!==false ||
stripos($user_agent, 'FireFox')!==false ||
stripos($user_agent, 'linux')!==false ||
stripos($user_agent, 'unix')!==false ||
stripos($user_agent, 'Macintosh')!==false
)
{
if (!(stripos($user_agent, 'Opera Mini')!==false
|| stripos($user_agent, 'WAP')!==false
|| stripos($user_agent, 'Mobile')!==false
|| stripos($user_agent, 'Symbian')!==false
|| stripos($user_agent, 'NetFront')!==false
|| stripos($user_agent, ' PPC')!==false
|| stripos($user_agent, 'iPhone')!==false
|| stripos($user_agent, 'Android')!==false
|| stripos($user_agent, 'Nokia')!==false
|| stripos($user_agent, 'Samsung')!==false
|| stripos($user_agent, 'SonyEricsson')!==false
|| stripos($user_agent, 'LG')!==false
|| stripos($user_agent, 'Obigo')!==false
|| stripos($user_agent, 'SEC-SGHX')!==false
|| stripos($user_agent, 'Fly')!==false
|| stripos($user_agent, 'MOT-')!==false
|| stripos($user_agent, 'Motorola')!==false
)
) return false;
}
return true;
}
或者更好的东西,哈哈:)
答案 3 :(得分:0)
您可以在网站地址中添加查询字符串参数,例如?fullsite=true
,并在if条件&gt;中包含以下内容
var fullsite = getQueryString()["fullsite"];
if (fullsite != "true" && (screen.height <= xyz || screen.width <= abc)) //now redirect
您需要以下函数访问查询字符串。我从这里拿走了它&gt; JavaScript query string
function getQueryString() {
var result = {}, queryString = location.search.substring(1),
re = /([^&=]+)=([^&]*)/g, m;
while (m = re.exec(queryString)) {
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
return result;
}
在链接中,您可以拥有&gt;
<a href="mysite.com?fullsite=true"> Show me Full Site </a>
===========
请说一下CSS Media Queries。它可能需要改变你的设计架构,但它非常有用。
答案 4 :(得分:0)
服务器端检测绝对是这样做的方法,因为您无法保证JS可用甚至打开。这里有一个很棒的用于移动检测的PHP脚本http://detectmobilebrowsers.mobi/,它可以在网络上得到很多使用。