我正在尝试使用JavaScript在chrome扩展程序上显示其他选项卡,但是它不起作用。
在这种情况下,它仅重定向到it.example.com
,当我将浏览器语言更改为英语或法语时,多数民众赞成脚本仅重定向到it.example.com
。
有人可以告诉我如何基于浏览器语言进行重定向吗?
我想对it
和fr
进行不同的重定向。其他语言应重定向到英语。
newtab.html
<head>
<title>Loading...</title>
<script type="text/javascript" src="js/newtab.js"></script>
</head>
newtab.js
if (window.navigator.language === 'it') {
window.location.href = 'https://it.example.com/';
}
if (window.navigator.language === 'fr') {
window.location.href = 'https://fr.example.com/';
}
else window.location.href = 'https://example.com/';
答案 0 :(得分:0)
(function redirectToSpecificPage() {
var base = 'https://$1example.com/',
replaceLng = function(toReplace, replaceWith) {
return base.replace(toReplace, replaceWith);
},
lngPages = {
en: replaceLng(''),
it: replaceLng('it.'),
fr: replaceLng('fr.'),
es: replaceLng('es.'),
}
window.location.href = lngPages[window.navigator.language.toLowerCase().slice(0,2)] || lngPages.base;
})();
答案 1 :(得分:0)
假设您已将!=
的所有===
更改为注释中建议的内容...
我更改了意大利语的浏览器语言,但仍将我重定向到example.com
您的条件似乎都没有评估为true
。
请注意,语言识别码通常包含国家/地区“变体” ...例如,例如,我的浏览器语言实际上是en-US
而不是en
。这里的list看起来很完整,您应该看看。
此外,对于这种特殊情况,建议您使用switch
语句,而不要使用if / else。
var language = window.navigator.language;
var languageFistTwo = language.substr(0,1); // To only keep the first 2 characters.
switch (languageFistTwo) {
case "en":
window.location.href = 'https://example.com/';
break;
case "it":
window.location.href = 'https://it.example.com/';
break;
case "fr":
window.location.href = 'https://fr.example.com/';
break;
case "es":
window.location.href = 'https://es.example.com/';
break;
default:
window.location.href = 'https://example.com/';
}
答案 2 :(得分:0)
我找到了解决方案。但这仅适用于chrome扩展名,不适用于firefox:/
_locales / zh-CN / messages.json
"example_default_search": {
"message": "example.com",
"description": ""
}
_locales / it / messages.json
"example_default_search": {
"message": "it.example.com",
"description": ""
}
newtab.js
function localizeHtmlPage()
{
//Localize by replacing __MSG_***__ meta tags
var objects = document.getElementsByTagName('html');
for (var j = 0; j < objects.length; j++)
{
var obj = objects[j];
var valStrH = obj.innerHTML.toString();
var valNewH = valStrH.replace(/__MSG_(\w+)__/g, function(match, v1)
{
return v1 ? chrome.i18n.getMessage(v1) : "";
});
if(valNewH != valStrH)
{
obj.innerHTML = valNewH;
}
}
}
localizeHtmlPage();
newtab.html
<head>
<title>Loading...</title>
<meta http-equiv="refresh" content="0;URL='https://__MSG_example_default_search__/'" />
<script type="text/javascript" src="js/newtab.js"></script>
</head>