求一段js 判断设备跳转网页的代码

一个网站要求 pc,安卓,iphone访问同一个域名到3个不同的网页,很多网站都具备这种功能,求这段代码

一般来说,你这个需求不难办到。思路无非两条,检测UA以及特性检测。

这两种方法可以说各有利弊。


UA检测来说,比较简单、准确、适用面广并且易扩充。

navigator.userAgent.match(/Android/i)  // 判断是否是Android设备
navigator.userAgent.match(/iPhone|iPad|iPod/i)  // 判断是否为iOS设备

通过以上的操作就可以很方便的检测用户使用的是什么设备。并且一次类推,几乎可以判断所有的浏览器。

不过UA检测的缺陷也是非常明显的,就是无法判断伪装的浏览器。大部分浏览器都会修改自己的UA,以适配更多的网站,甚至很多移动端的浏览器还支持自定义UA。所以使用UA检测准确,但不一定正确。


另外就是特性检测,特性检测顾名思义,是通过用户浏览器拥有的特性来检测,例如说判断浏览器是否支持某些内置方法来进行判断,或者通过浏览器的怪癖(例如说有些低版本的IE会在解析某些设置时显得跟别人颇为不同)来进行判断。

他的优势是可以真正的检测到浏览器的类型,识破伪装。

不过劣势是非常明显的,就是比较繁琐,并且很麻烦,浏览器版本升级后可能就失效了。


所以建议你使用UA检测或者jQuery Migrate之类的插件。

追问

我需要的是判定设备而不是浏览器,主要判定的就是 iphone ipad 和安桌
我找到一段这样的

居然发布出来,超过最大字数。。。什么玩意儿

追答

明确一点,JS是运行在浏览器中的,他无法超出浏览器,所以JS只能判断浏览器的特性。
至于UA中的内容,是浏览器生成的,一般情况下,浏览器会在UA中添加相应的操作系统信息。
所以对设备或者系统的判断,其实还是基于对浏览器的判断。

追问

UA是什么东西,是一种语言工具么?可否像js一样直接放入网页中使用,麻烦给我一段代码,具体内容为

判定设备为 安卓手机,安卓平板,pc,iphone,ipad
判定后页面跳转到 xxxx

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-09

一般是通过获取useragent来判断是什么设备来访问的页面

我这边有个dz里面的php函数,你可以相应的改变下弄成js的


function checkmobile() {
static $mobilebrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
'benq', 'haier', '^lct', '320x320', '240x320', '176x220');
$pad_list = array('pad', 'gt-p1000');
$useragent = strtolower(isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:'');
$useragent=str_ireplace('coolpad','',$useragent);
if(dstrpos($useragent, $pad_list)) {
return false;
}
if(dstrpos($useragent, $mobilebrowser_list)) {
return true;
}
return false;
}

function dstrpos($string, &$arr, $returnvalue = false) {
if(empty($string)) return false;
foreach((array)$arr as $v) {
if(strpos($string, $v) !== false) {
$return = $returnvalue ? $v : true;
return $return;
}
}
return false;
}

第2个回答  2013-10-09
var userAgentInfo = navigator.userAgent;
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
var flag = false;
var v=0
for ( v = 0; v < Agents.length; v++)
{
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = true; break; }
}
if(flag){
alert(Agents[v]);// 设备类型
}
else
{
// pc
}本回答被网友采纳