如何在检测浏览器语言的同时停止JavaScript的无限循环
How to stop infinite loop of javascript while detecting browser language
我的目标是检测用户的语言并将其重定向到法语页面或英语,英语是默认值。 如果我只将代码放在法语页面上并尝试打开法语页面,这就会起作用,这会自动检测并加载英语。 如果我两者都有代码,那么它就会陷入无限循环。 任何帮助将不胜感激。 这是代码。
<script language="javascript">
var langcodes=new Array("en", "fr", "default") ;
var langredirects=new Array("http://defaulten.asp",
"http://default-fr.asp",
"http://default.asp");
var languageinfo=navigator.language? navigator.language : navigator.userLanguage ;
var gotodefault=1 ;
function redirectpage(dest){
if (window.location.replace)
window.location.replace(dest)
else
window.location=dest
}
for (i=0;i<langcodes.length-1;i++){
if (languageinfo.substr(0,2)==langcodes[i]){
redirectpage(langredirects[i])
gotodefault=0
break
}
}
if (gotodefault)
redirectpage(langredirects[langcodes.length-1])
</script>
如果您已经在正确的页面上,您需要确保不要重定向,例如
if (languageinfo.substr(0,2)==langcodes[i]) {
gotodefault = 0;
var redirPage = langredirects[i];
if (redirPage != document.URL)
redirectpage(redirPage);
break
}
此外,如果en
是默认值,我不会有一个特定的页面,即 defaulten.asp
.我只会提供特定于语言的页面,即 default-fr.asp
/default-us.asp
,如果你遵循这种方法,你的代码会更简单,例如
var languageinfo = navigator.language ? navigator.language : navigator.userLanguage;
languageinfo = languageinfo == "en" ? "" : languageinfo;
var langUrl = sprintf("http://default%s.asp", languageinfo);
if (document.URL != langUrl)
redirectpage(langUrl);
相关文章:
- 为什么内部Javascript循环会阻止外部循环中断(即无限循环)
- do/while语句中的if-elseif语句无限循环javascript
- 终止无响应/无限循环的WebWorker(Javascript)
- javascript停止一个无限循环
- 我如何不在 javascript 中无限循环我的程序
- Javascript无限循环,直到某个条件
- 而 JavaScript 中的循环,卡在无限循环中
- 如何在检测浏览器语言的同时停止JavaScript的无限循环
- Javascript 函数有时会将自身循环成无限循环
- 在 Jquery 或 Javascript 中调用方法的无限循环的正确方法是什么?
- JavaScript 中的无限循环 - while 循环
- 希望Javascript无限循环运行
- 如何从无限循环的Javascript函数将值传递给MySQL
- JavaScript范围问题导致无限循环
- 为什么这个JavaScript无限循环
- Javascript无限循环更新实体
- 停止javascript无限循环onmouseout
- Javascript无限循环错误在我的数组
- 如何识别和终止一个javascript无限循环编程
- JavaScript:无限循环,或者不是