首页 > 解决方案 > 如何修复 IE 和 Edge 的本地存储翻译工具

问题描述

我用 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") {

标签: javascriptinternet-explorerlocal-storagemicrosoft-edge

解决方案


如果(类型(存储)!==“未定义”){

这行代码用于检查浏览器是否支持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 版本),结果是这样的。在此处输入图像描述

因此,请检查您的 javascript 代码,是否有其他脚本会导致此问题。

此外,您可以尝试清除浏览器缓存、历史记录和浏览器数据,然后重新测试您的代码(也可以创建一个新示例来测试上述代码)。


推荐阅读