Javascript jQuery在某些情况下重定向手机
我正在尝试获取jQuery脚本,以便在某些情况下重定向到我的站点的移动优化版本。基本上,如果浏览器是移动的,它将重定向到移动设备,除非在URL中得到参数“mobile=0”。我有一种方法可以检测它是否是移动的,我有一个插件可以让你通过jQuery从URL获取参数(http://www.mathias-bank.de/2007/04/21/jquery-plugin-geturlparam-version-2/)这很有效 我想要的流程是,如果它是桌面,将mobile变量设置为0,而不是重定向。然后,如果是移动的,则重定向,除非url将移动变量设置为0Javascript jQuery在某些情况下重定向手机,javascript,jquery,redirect,mobile,Javascript,Jquery,Redirect,Mobile,我正在尝试获取jQuery脚本,以便在某些情况下重定向到我的站点的移动优化版本。基本上,如果浏览器是移动的,它将重定向到移动设备,除非在URL中得到参数“mobile=0”。我有一种方法可以检测它是否是移动的,我有一个插件可以让你通过jQuery从URL获取参数(http://www.mathias-bank.de/2007/04/21/jquery-plugin-geturlparam-version-2/)这很有效 我想要的流程是,如果它是桌面,将mobile变量设置为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;
}
}
提前谢谢 我想你的逻辑可能比它需要的复杂一点 我想要的流程是,如果它是桌面,将一个mobile变量设置为 0,而不是重定向。然后,如果是移动设备,则重定向,除非移动设备 url将变量设置为0 1) 如果是移动重定向 2) 如果它的mobile=0,则不要重定向 3) 如果是电脑,不要重定向 在您的计算机上测试移动版本怎么样?(手机=1)
var deviceAgent=navigator.userAgent.toLowerCase();
文件。写入(“设备代理:“+deviceAgent”);
var agentID=deviceAgent.match(/(iphone | ipod | ipad | android | iemobile | ppc | smartphone | blackberry | webos |)/);
文档。写入(“代理ID:“+agentID”);
//这在JSFIDLE上不起作用,但它会起作用(非jquery方式)
var mobile=getUrlVars()[“mobile”];
文件。写(“
手机:“+Mobile”);
//如果我们是一部手机,并且没有移动参数的迹象,或者它不是0,请重定向。
如果(agentID.length>3&(!mobile | | mobile!=“0”)){
文档。写(“
转到移动站点”);
window.location=“mobile.verison.of.my.site.com”
}
否则{
写下(“
不要去手机”);
返回false;
}
//调用了.ready()的处理程序。
函数getUrlVars()
{
var vars=[],散列;
var hashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');
for(var i=0;i
更新:agentID将=“,”,如果在deviceAgent字符串中找不到任何内容,则为2个字符的字符串。因此,您可以检查它的长度,而不是测试它是否为null
那么,到目前为止,您的代码有什么问题?现在,如果我使用的是移动浏览器,它不会重定向。我已经测试过我的重定向在移动设备上工作,但是在添加url参数后,它停止了工作。编辑:意识到我忘了添加那个。谢谢如果在添加$.getURLParam(“移动”)后它停止工作,您是否测试过是否从该jquery方法获得值?(一条警告信息就足够了)。但是看看你的逻辑,如果它不是一个移动设备,你永远无法解析移动参数。我从我在问题中链接的jQuery插件中得到$.getURLParam(“移动”)。(它确实有效,我测试了它,确保从中获得了变量)你对我如何正确解析它有什么建议吗?我希望移动参数始终为1,除非URL显示为0,或者我在桌面上。该代码的唯一问题是它在PC和移动设备上都重定向。这将需要是在PC上,手机自动设置为0。谢谢!你的代码有一个问题,比如在我的iPodtouch上,我看到了“ipod,ipod”。因此,我将agentID.length>3反转为agentID.length<3,它工作得非常好!再次感谢您的帮助。:-)
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;
}