Как исправить инструмент перевода с локальным хранением для IE и Edge - PullRequest
0 голосов
/ 25 сентября 2019

Я написал инструмент для перевода в JS для моего сайта.Он отлично работает для всех браузеров, кроме IE и Edge.Я работаю с локальным хранилищем, чтобы сохранить выбранный язык.Консоль Edge сообщает мне, что проблема в строке

if (typeof(Storage) !== "undefined") {

Кто-нибудь знает, как это исправить?

var lang;

function translateTexts() {

if (typeof(Storage) !== "undefined") {
    if (window.localStorage.getItem("lang") == null) {
        window.localStorage.setItem("lang", 'de');
    }

  var lang = window.localStorage.getItem("lang");

    if (lang == 'de') {
        document.getElementById("mySelect").selectedIndex = "0";
    }
    if (lang == 'en') {
        document.getElementById("mySelect").selectedIndex = "1";
    }
} else {
    lang = "de";
}

Неизвестная ошибка в строке 6:

if (typeof(Storage) !== "undefined") {

1 Ответ

0 голосов
/ 26 сентября 2019

if (typeof (Storage)! == "undefined") {

Эта строка кода используется для проверки, поддерживает ли браузер LocalStorage или нет.

Со ссылкой на этой статьи мы видим, что LocalStorage поддерживает IE 8+ и Microsoft Edge 12+.Вы можете проверить версию своего браузера и убедиться, что он поддерживает localStorage.

Я создал образец, используя следующий код:

<div>
    <select id="mySelect">
        <option value="us">us</option>
        <option value="de">de</option>
        <option value="en">en</option>
    </select>
</div>
<script>
    var lang;
    function translateTexts() {

        if (typeof (Storage) !== "undefined") {
            if (window.localStorage.getItem("lang") == null) {
                window.localStorage.setItem("lang", 'de');
            }

            var lang = window.localStorage.getItem("lang");
            debugger;
            if (lang == 'de') {
                document.getElementById("mySelect").selectedIndex = "1";
            }
            if (lang == 'en') {
                document.getElementById("mySelect").selectedIndex = "2";
            }
            console.log("support storage");
        } else {
            lang = "de";
            console.log("de");
        }

    }

    translateTexts();
</script>

Он хорошо работает на моей стороне (с помощью Microsoft Edge 44.18362.1.0 и IE 11.116.18362.0 версия), и результат, подобный этому. enter image description here

Итак, пожалуйста, проверьте свой код JavaScript, есть ли другой сценарий, который вызовет эту проблему.

Кроме того, вы можете попытаться очистить кеш браузера, историю и данные браузера, а затем повторно протестировать свой код (также вы можете создать новый пример для проверки кода выше).

...