javascript - 如何修复 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") {
解决方案
如果(类型(存储)!==“未定义”){
这行代码用于检查浏览器是否支持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 代码,是否有其他脚本会导致此问题。
此外,您可以尝试清除浏览器缓存、历史记录和浏览器数据,然后重新测试您的代码(也可以创建一个新示例来测试上述代码)。
推荐阅读
- reactjs - 单击时反应材质表不会呈现图标
- ios - 使用 minimumScaleFactor 缩放字体后,UILabel 未调整大小
- e-commerce - hybris 是否有任何单独的 JVM 可用?以及如何检查?
- docker - 在 Traefik 动态配置中使用环境变量
- java - 我们可以在@Entity 类中创建@CollectionTable,哪个类在其他@Entity 类中用作CollectionTable
- mongodb - MongoDB,如何关联数组字段进行统计
- bash - 在 linux 文件中逐行比较
- javascript - 无法选择动态生成的 HTML 元素(使用 Handlebars Block 助手生成)
- python - 根据两列中的值匹配熊猫数据框中的行
- python - 使用 Google Vision API 从图像中提取分块文本