我想在某些情况下让jQuery脚本重定向到我的网站的移动优化版本。基本上,如果浏览器是移动的,它将重定向到移动设备,除非在URL中它获得参数“mobile = 0”。我有办法检测它是否是移动的,我有一个插件可以让你从jQuery获取URL的参数(http://www.mathias-bank.de/2007/04/21/jquery-plugin-有效的geturlparam-version-2 /。
我想要的流程是,如果它是桌面,将移动变量设置为0,而不是重定向。然后,如果它是移动的,则重定向除非移动变量由URL设置为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 :(得分:1)
我认为你的逻辑可能比它需要的更复杂。
我想要的流程是,如果它是桌面,请将移动变量设置为 0,而不是重定向。然后,如果它是移动的,除非移动设备重定向 url将变量设置为0。
1)如果是移动设备 - 重定向。
2)如果它有mobile = 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个字符的字符串。因此,您可以检查它的长度,而不是测试它是否为空。