[英]JS Redirect based on browser language if ... else' statement loops infinitely
我已經編寫了一小段代碼來根據瀏覽器語言進行重定向,但是如果我使用原始 URL,代碼的“else”部分將無限循環。
我已經測試過它,如果我重定向到不同的 URL,它就像一個魅力,所以我假設它與嘗試將它重定向回原始 URL 有關,但不知道如何阻止它。 Break/Continue 和 console.log 有效,但前兩個是非法的,顯然我不能離開 console.log :如果第一個條件為假,SI 需要告訴 if/else 語句基本上停止或“停留在頁面上” .
有人能告訴我如何解決這個問題,以便如果瀏覽器語言設置為法語,重定向 ELSE 會留在原始 URL 上嗎?
<!-- language redirect -->
<script>
userLang = navigator.language || navigator.userLanguage;
if (userLang == "fr") {
window.location.href = "http://www.website.com/fr";
}
else {
console.log('null'); *** THIS WORKS but is not right
window.location.href = "http://www.website.com"; *** THIS DOESN'T WORK gets stuck in a loading loop infinitely
window.location.href="http://www.someotherwebsite.com"; ***THIS WORKS but doesn't achieve my purpose
}
</script>
如果瀏覽器語言是法語,則重定向到法語網站(子目錄)ELSE 什么都不做,停留在英語網站上。
由於此腳本只會在英文頁面中實現,因此您無需為 else 語句傳遞任何內容。
userLang = navigator.language || navigator.userLanguage;
if (userLang == "fr") {
window.location.href = "http://www.website.com/fr";
}
對於法語頁面,您只需將“fr”更改為“en”。
當您將 url 分配給window.location.href
屬性時,即使將指定的 url 設置為您當前所在的 url,也會加載該 url。 如果語言不是法語,這會導致您的瀏覽器不斷重新加載您的網站。
來自MDN :
每當為 location 對象分配新值時,將使用 URL 加載文檔,就像使用修改后的 URL 調用 location.assign() 一樣。 請注意,安全設置(如 CORS)可能會阻止這種情況有效發生。
為了解決您的問題,當您已經在用戶語言的正確頁面上時,您不應設置window.location.href
屬性。
這只是一個邏輯問題。 如果它已經在那里,為什么要重定向到一個 url? 只需額外檢查一下,它是否已經在正確的 url 中,如下所示
<script>
userLang = navigator.language || navigator.userLanguage;
if (userLang == "fr" && window.location.href!= "http://www.website.com/fr") {
window.location.href = "http://www.website.com/fr";
}
else {
if(window.location.href != "http://www.website.com") {
window.location.href = "http://www.website.com";
}
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.