JavaScript перенаправляет пользователей на основе языка браузера (расширение Chrome) - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь показать другую вкладку в расширении Chrome с помощью JavaScript, но он не работает.

В этом случае он перенаправляет только на 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/';

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Предполагая, что вы изменили все свои != на ===, как предлагается в комментариях ...

Я изменил язык браузера на итальянский, который все еще перенаправляет меня на example.com

Похоже, что ни одно из ваших состояний не оценено как true.

Имейте в виду, что идентификационные коды языка часто включают "вариант" страны ... Например, дляНапример, мой язык браузера на самом деле en-US вместо просто en.Вот список , который выглядит завершенным, и вы должны посмотреть его.

Кроме того, я предлагаю вам использовать оператор 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/';
} 
0 голосов
/ 29 ноября 2018

Я нашел решение.но это работает только в расширении Chrome, не работает в Firefox: /

_locales / en / 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>
0 голосов
/ 29 ноября 2018

(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;
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...