jQuery在某些情况下重定向移动

时间:2011-08-26 22:34:21

标签: javascript jquery redirect mobile

我想在某些情况下让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;
    }
}

提前致谢!

1 个答案:

答案 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个字符的字符串。因此,您可以检查它的长度,而不是测试它是否为空。

http://jsfiddle.net/3zv64/