2011-08-26 10 views
0

特定の状況下で、私のサイトのモバイルに最適化されたバージョンにリダイレクトするjQueryスクリプトを取得しようとしています。基本的に、ブラウザがモバイルの場合、URLに引数 "mobile = 0"がない限り、モバイルにリダイレクトされます。私はそれがモバイルであるかどうかを検出する方法を持っています、そして、あなたはjQueryでURLから引数を得ることができるプラグインを持っています(http://www.mathias-bank.de/2007/04/21/jquery-plugin- geturlparam-version-2 /)は動作します。jQueryは特定の状況下でモバイルをリダイレクトします

デスクトップの場合はモバイル変数を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

これまでのコードの問題点は何ですか? –

+0

現在、モバイルブラウザの場合はリダイレクトされません。リダイレクトはモバイルで動作することをテストしましたが、URLパラメータを追加した後は動作しなくなりました。編集:私はそれを追加することを忘れて実現。ありがとう! – Remixz

+0

$ .getURLParam( "mobile")を追加した後に動作が停止した場合、そのjqueryメソッドから値を取得しているかどうかテストしましたか? (警告メッセージで十分です)。しかし、あなたのロジックを見て、それがモバイルデバイスでないなら、決してモバイルパラメータを解析することはできません。 –

答えて

1

私はロジックが必要なよりも少し複雑かもしれないと思います。

デスクトップの場合はモバイル変数を に設定してリダイレクトしないようにしたいと思っています。モバイルであれば、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

ありがとう!あなたのコードの1つの問題は、(例えば)私のiPodタッチで、私は "iPod、iPod"を得たことです。だから、私はagentID.length> 3をagentID.length <3に逆にして、それは完全に動作します!あなたの助けをもう一度ありがとう。 :-) – Remixz

関連する問題