我正在创建网站的移动版本,但仅适用于智能手机。如果设备是平板电脑、笔记本电脑、上网本、台式机或任何类似设备,我希望用户自动访问完整站点。如果它是简单的 CSS,我会知道该怎么做。但是,移动版本使用与完整站点版本不同的模板和脚本,并且需要相应地重定向,而不是简单地使用另一个样式表。
有人有建议或文章可以说明如何检测所述设备并相应地重定向吗?
我正在创建网站的移动版本,但仅适用于智能手机。如果设备是平板电脑、笔记本电脑、上网本、台式机或任何类似设备,我希望用户自动访问完整站点。如果它是简单的 CSS,我会知道该怎么做。但是,移动版本使用与完整站点版本不同的模板和脚本,并且需要相应地重定向,而不是简单地使用另一个样式表。
有人有建议或文章可以说明如何检测所述设备并相应地重定向吗?
我能找到的唯一方法是一个 hack,我在其中:
使用 css 媒体查询使用 max-device-width 检测手机
在此基础上设置样式的更改 - 我将体色从 #000000 更改为 #000001
使用 OnLoad 调用 Javascript 来检查正文颜色。
在此基础上重定向。(在我自己的情况下,我实际上使用了 window.confirm 调用来为用户提供选择,而不是强制重定向)。
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Phone test</title>
<meta name="viewport" content="width=device-width">
<style type="text/css">
body
{ color: rgb(0, 0, 0);}
@media screen and (max-device-width:600px), screen and (max-width:600px)
{
body{ color: rgb(0, 0, 1);}
}
</style>
<script type="text/javascript">
<!--
function doPhoneCheck()
{
var col;
if(document.body.currentStyle)
{
col = document.body.currentStyle.color; // IE
}
else
{
col = getComputedStyle(document.body).getPropertyValue("color");
}
if(col =="rgb(0, 0, 1)")
{
window.location.href="http://www.apple.com/";
}
}
//-->
</script>
它检测到所有 iPhone 到 6+,以及我测试过的 Android 和 Windows 手机。它歧视所有当前的 iPad 以及我尝试过的笔记本电脑和台式机。
注意
(1) 对于颜色,您必须使用 rgb 并按照所写的方式留出空格。
(2) 我发现由于某种未知原因,类似的代码不会检测到正文背景颜色。
(3) 检测css样式的关键是使用getComputedStyle()(或者IE的currentStyle)而不是getStyle()。
(4) 即使身体颜色的变化是难以察觉的,也可以通过为所有 css 类等指定颜色来覆盖它。
可以在此处找到解决问题的有效方法:https ://github.com/sebarmeli/JS-Redirection-Mobile-Site