我正尝试使用javascript来确定用户是否使用某种语言,以及他们是否未使用英语,那么该页面将加载我已从url中获取的参数的另一页BUT 。
我已经能够使用参数加载页面,但是即使浏览了无数其他示例,例如this或this,我仍然陷入了重新加载页面的循环。
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
设置为我需要的值,但是它一直在循环。
答案 0 :(得分:3)
加载此功能的脚本有可能在您的两个页面(英语和非英语)中均执行。因此,一旦页面加载完毕,就会在英语和非英语网站中执行locateUserLanguage函数,从而导致无限循环。
在调用locateUserLanguage函数之前,您需要检查一下。
假设英语网站的网址=“ www.myside.com”,非英语网站的网址为“ www.myside.aus”。因此条件必须是
if (window.location.host === "www.myside.com") { locateUserLanguage() }
这将确保仅在英语网站中调用locateUserLanguage。
或者其他方法可以仅在英语网站中加载此脚本,这将避免使用条件语句。
希望有帮助。如有任何疑问,请回复。