JavaScript根据浏览器语言(Chrome扩展程序)重定向用户

时间:2018-11-28 22:49:54

标签: javascript jquery html google-chrome-extension firefox-addon

我正在尝试使用JavaScript在chrome扩展程序上显示其他选项卡,但是它不起作用。

在这种情况下,它仅重定向到it.example.com,当我将浏览器语言更改为英语或法语时,多数民众赞成脚本仅重定向到it.example.com

有人可以告诉我如何基于浏览器语言进行重定向吗?

我想对itfr进行不同的重定向。其他语言应重定向到英语。

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/';

3 个答案:

答案 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>