问题描述
我正在尝试使用javascript来确定用户是否使用某种语言,如果他们没有使用英语,那么页面加载不同的页面,但我从网址抓取的参数。
我已经能够使用params加载页面,但是我继续陷入重新加载页面的循环中,即使在浏览了无数其他示例之后,例如: 或 。
function locateUserLanguage() {
var languageValue = (navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage)).split('-');
var url = window.location.href.split('?');
var baseUrl = url[0];
var urlParams = url[1];
if (languageValue[0] === 'en') {
console.log('no redirect needed, stay here.');
} else {
// I tried to set location into a variable but also wasn't working.
// var newURL = window.location.href.replace(window.location.href, 'https://www.mysite.dog/?' + urlParams);
window.location.href = 'https://www.mysite.dog/?' + urlParams
}
} locateUserLanguage();
我试图return true;
以及return false;
但是没有阻止循环。
我试过window.location.replace();
并将window.location.href
直接设置为我需要的,但它继续循环。
1楼
Sunil
3
已采纳
2019-02-25 13:06:40
编写此函数的脚本有可能在加载时在您的两个页面(英语和非英语)中执行。 因此,只要加载页面,就会在英语和非英语网站中执行locateUserLanguage函数,从而导致无限循环。
您需要在调用locateUserLanguage函数之前进行检查。
假设英文网站有url =“www.myside.com”,非英文网站有网址“www.myside.aus”。 所以条件需要
if (window.location.host === "www.myside.com") { locateUserLanguage() }
这将确保仅在英文网站中调用locateUserLanguage。
或者其他apporach可以仅在英文网站上加载此脚本,这将避免使用条件语句。
希望能帮助到你。 如有任何疑问,请回复。