2016-11-17 16 views
3

私はあなたの問題を手伝ってくれることを願っています。静的なHTMLサイトに3つの言語があります。私はブラウザの言語設定に基づいてユーザーをリダイレクトしたいと思います。静的な多言語JavaScriptのリダイレクトがページのリロードを続ける

これは私のコードです:

var lang = navigator.language; 
if (lang == 'pl'){ 
    document.location.href = 'index_pl.html'; 
} 
else if (lang == 'fr'){ 
    document.location.href = 'index_fr.html'; 
} 
else { 
    document.location.href = 'index.html'; 
} 
alert(lang); 

問題は毎回のユーザーが、このスクリプトは、サイトをリダイレクト/さわやか続けるウェブサイトを入力しますです。私の質問は、一度ユーザーのブラウザを確認してから、専用のWebページにリダイレクトする方法です。

ありがとうございます。

答えて

2

リダイレクトしないようにするには、現在のURLのページを確認する必要があります。例:

var lang = navigator.language; 
var redirectURL = 'index.html'; 

if (lang == 'pl'){ 
    redirectURL = 'index_pl.html'; 
} else if (lang == 'fr'){ 
    redirectURL = 'index.html'; 
} 

if (document.location.pathname.indexOf(redirectURL) == -1) { 
    document.location.href = redirectURL; 
} 

これは、redirectURLがパスにないことを確認します。

+0

お返事ありがとうございます。すべてのファイルはルートディレクトリにあり、上記のコードはユーザーのブラウザ言語を確認し、その情報に基づいて特定のページにリダイレクトします。ユーザーがリダイレクトされると、sciptはユーザー言語を再度チェックします。 (無限ループ)。たぶん、最初のリダイレクト後にURLに何かを追加するか、localstorageを使うべきでしょうか? – Kamil

+0

オプションの内容を保存する場合は、localstorageまたはcookieを使用できますが、必要はありません。まだリダイレクトされている場合は、何かがパスチェックと一致しません。 document.location.hrefをコメントアウトし、表示されている内容(alertまたはconsole.log)を出力します。例:alert(document.location.path + "!= /" + redirectURL) – fanfavorite

+0

は未定義です!/index_pl.html すべてのファイルは同じルートディレクトリにあります – Kamil

0

こんにちは、私はlocalStorageを使用してこの問題を解決したと思います。以下 コード:私は右だ場合

 if (localStorage.getItem("visit") == null) 
{ 
    // Show Welcome message 
    var lang = navigator.language; 
    if (lang == 'pl'){ 
     document.location.href = 'index_pl.html'; 
    } 
    else if (lang == 'fr'){ 
     document.location.href = 'index_fr.html'; 
    } 
    else { 
     document.location.href = 'index.html'; 
    } 
} 

localStorage.setItem("visit", new Date()); 

あなたが私に助言していただけますか?事前に感謝

+0

このソリューションの問題は、リダイレクトに設定された後に日付を設定することです。私はまだあなたがこれを必要とは思わない。文字列中のredirectURLのインスタンスをチェックするための私の修正された解決策を見ることができるので、あなたのlocalhost上で動作します。このタイプのメソッドも機能しますが、リダイレクトの前にアイテムを設定する必要があります。あなたはif文の中の最初の項目として置くことができます。 – fanfavorite

関連する問題