Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在某些情况下重定向手机_Javascript_Jquery_Redirect_Mobile - Fatal编程技术网

Javascript jQuery在某些情况下重定向手机

Javascript 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,而不是重定向。然后

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

我想要的流程是,如果它是桌面,将mobile变量设置为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;
    }
}

提前谢谢

我想你的逻辑可能比它需要的复杂一点

我想要的流程是,如果它是桌面,将一个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;
}