2011-08-26 53 views
0

我想在某些情况下获得一个jQuery脚本重定向到我的网站的移动优化版本。基本上,如果浏览器是移动的,它将重定向到移动设备,除非在URL中获得参数“mobile = 0”。我有一种方法来检测它是否是移动的,并且我有一个插件可以让你通过jQuery从URL获取参数(http://www.mathias-bank.de/2007/04/21/jquery-plugin- geturlparam-version-2 /)的工作。jQuery重定向移动在某些情况下

我想要的流程是如果它是桌面,将移动变量设置为0,而不是重定向。然后,如果它是移动的,则重定向,除非网址将移动变量设置为0。

现在,如果我在移动浏览器上,它不会重定向。我测试了我的重定向在移动设备上工作,但添加了url参数后,它停止工作。

我开始编码,但由于我在JavaScript上有点新,我知道我犯了一些错误。我的代码到目前为止是:

 var deviceAgent = navigator.userAgent.toLowerCase(); 
    var agentID = deviceAgent.match(/(iphone|ipod|ipad|android|iemobile|ppc|smartphone|blackberry|webos|)/); 
    var mobile = $.getURLParam("mobile"); 
    if (!agentID) { 
     mobile = "0"; 
    } 
    else { 
     return false; 
    } 
    if ($.getURLParam("mobile")==0) { 
      return false; 
    } 
else { 
    if (agentID) { 
     window.location.replace("http://remiwebo.vacau.com"); 
    } 
    else { 
     return false; 
    } 
} 

在此先感谢!

+0

那么,到目前为止你的代码有什么问题? –

+0

现在,如果我在移动浏览器上,它不会重定向。我测试了我的重定向在移动设备上工作,但添加了url参数后,它停止工作。编辑:意识到我忘了补充说。谢谢! – Remixz

+0

如果在添加$ .getURLParam(“mobile”)之后它停止工作,您是否测试了一下,看看您是否从该jQuery方法获取了值? (一条警报消息就足够了)。但看看你的逻辑,如果它不是一个移动设备,你永远不能解析移动参数 –

回答

1

我认为你的逻辑可能比它需要的复杂一点。

我想要的流程是如果它是桌面,请将移动变量设置为 0,而不是重定向。然后,如果它是移动的,则重定向,除非移动 变量由url设置为0。

1)如果它是手机 - 重定向。

2)如果它有移动= 0不重定向。

3)如果它是PC不重定向。

如何在您的计算机上测试移动版本? (手机= 1)?

var deviceAgent = navigator.userAgent.toLowerCase(); 
document.write("Device Agent: " + deviceAgent); 
var agentID = deviceAgent.match(/(iphone|ipod|ipad|android|iemobile|ppc|smartphone|blackberry|webos|)/); 

document.write("</br>Agent ID: " + agentID); 


//This doens't work well on JSfiddle, but it wwill work (non jquery way) 
var mobile = getUrlVars()["mobile"]; 
document.write("<br />Mobile : " + mobile); 

    //If we're a cell phone AND if there is no sign of the mobile parameter, or it is other than 0, redirect. 
    if (agentID.length > 3 && (!mobile || mobile != "0")) { 
     document.write("<br />GO GO GO TO MOBILE SITE"); 
     window.location = "mobile.verison.of.my.site.com" 
    } 
    else { 
     document.write("<br />DO NOT GO TO MOBILE"); 
     return false; 
    } 
     // Handler for .ready() called. 


function getUrlVars() 
{ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
} 

更新:AGENTID会= “”,如果它没有找到在deviceAgent任何字符串2字符串。因此,而不是测试它是否为空,您可以检查它的长度。

http://jsfiddle.net/3zv64/

+0

该代码的唯一问题是它在PC和移动设备上重定向。这将需要在PC上,手机自动设置为0。 – Remixz

+0

谢谢!你的代码有一个问题,就是(例如)我的iPod touch,我得到了“ipod,ipod”。所以,我将agentID.length> 3反转为agentID.length <3,它完美地工作!再次感谢你的帮助。 :-) – Remixz

相关问题