2017-05-11 8 views
-1

私は現在2つの異なる目的のために2つの作業用スクリプトを持っています: 1)ブラウザ言語に基づく自動リダイレクトスクリプト 2)使用2種類の変数タイプを1つのJavaScriptコードに結合する方法

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script>var language = navigator.language || navigator.userLanguage; 
window.onload=function(){ 
if (language.indexOf('fr') > -1) { 
document.location.href = 'mysite.com/french'; 
} else { 
document.location.href = 'mysite.com/intl'; }}</script> 


<script>function DeviceDirection() 
{ if( 
/nokia/i.test(navigator.userAgent) || 
/Android/i.test(navigator.userAgent)) 
{ window.open('mysite.com/android_and_nokia_devices'); }else{ window.open('mysite.com/all_devices'); } }</script> 

中のデバイス上で私は他のすべては、他の一般的なページに移動する必要がありながら、唯一のAndroidを使用して、フランスのユーザに専用の1ページに特定のボタンをクリックして訪問者を向ける、1つのスクリプトにこれらの2つの機能を結合する必要があります。

次のコードを入力しようとしましたが、いくつかの方法で編集しましたが機能しません。それを正しいものにするのを助けてくれますか?前もって感謝します。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script>var language = navigator.language || navigator.userLanguage; 
window.open=function FrenchAndroid(){ 
if (
/Android/i.test(navigator.userAgent) || 
language.indexOf('fr') > -1)) 
{ window.open('mysite.com/android_devices_for_french_visitors/'); 
}else{ 
window.open('mysite.com/all_other_languages_and_devices'); } } 
</script> 

上記のこの建物で私を助けてください。

+0

あなた 'if'が使用する' && 'の代わりに' ||:あなたは、それはボタンがクリックされたときに実行したい場合は
たとえば、ボタンの上にopenPageを呼び出すイベントリスナーを追加'あなたは両方の条件が満たされ、アンドロイドデバイスを使用していて実際にフランス人の訪問者であることが欲しいからです。 – Lixus

+0

あなたは' window.open'関数を上書きしていて、新しい関数で 'window.open 。これは、無限の再帰につながります。ページを新しいウィンドウ/タブで開くか、現在のタブに読み込みしますか? 'window.open()'は新しいウィンドウ/タブを開き、 'location.href ='は現在のタブのページを読み込みます。 –

+0

Thxヒントのための@Lixus。 –

答えて

0

私はこのコードスニペットは、何が必要だと思う:

function isFrenchAndroid() { 
    var language = navigator.language || navigator.userLanguage; 
    var isAndroid = /Android/i.test(navigator.userAgent); 
    var isFrench = language.indexOf('fr') !== -1; 

    return isFrench && isAndroid; 
} 

var btn = document.querySelector('button'); 

btn.addEventListener('click', function(event) { 
    event.preventDefault(); 

    if (isFrenchAndroid()) { 
     window.open('https://www.google.fr'); 
    } else { 
     window.open('https://www.google.com'); 
    } 
}); 

デバイスがAndroidの実行されていると、ブラウザの言語がフランス語である場合trueを返すisFrenchAndroid機能。次に、クリックイベントがボタンに付けられ、チェックの後、新しいウィンドウが開きます。このJS Binには実行中の例があります。

新しいウィンドウを開きたくない場合は、代わりにwindow.location.href = 'https://www.google.fr'を使用することをおすすめします。

希望します。

+0

ありがとう –

+0

最終的なコードを表示することはできますか?広告ブロッカーがインストールされている場合は、 'window.open'をブロックしている可能性があります。 https://jsbin.com/jozeduliwe/edit?html,js,output –

+0

私のテストは次のとおりです:https://jsbin.com/wijihabavi/edit?html,js,output –

0

私が正しくあなたが達成しようとしているもの理解している場合は、これはトリックを行う必要があります。

<script type="text/javascript"> 
    var language = navigator.language && navigator.userLanguage; 
    function openPage() { 
    if (/Android/i.test(navigator.userAgent) && language.indexOf('fr') > -1)) { 
     window.open('mysite.com/android_devices_for_french_visitors/'); 
    } else { 
     window.open('mysite.com/all_other_languages_and_devices'); 
    } 
    } 
</script> 

は今、あなたはちょうどあなたがそれを実現したい場所openPage()を起動する必要があります。

buttonElement.addEventListener("click", openPage);

+0

ありがとうございますが、動作していません。ボタンをクリックすると、何も起こりません。 –

+0

@DanielleFiorucci問題を起こしていたコードを書き直して、機能させるようにしました。しかし、ボタンをクリックしたときにコードが実行されるようにするには、 'openPage'を呼び出すボタンにイベントリスナーを追加する必要があります。私は例で私の答えを更新しました。 –

+0

まだ動作していません。私は間違っているのですか? ここに私のテストがあります:https://jsbin.com/tagedapoki/edit?html,js,output –

関連する問題