[英]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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.