Javascript 本地存储在IE9和Firefox中不工作
我正在使用localStorage。我的代码在Chrome上运行得很好,但在IE9和Firefox上却不行 代码如下:Javascript 本地存储在IE9和Firefox中不工作,javascript,firefox,internet-explorer-9,local-storage,Javascript,Firefox,Internet Explorer 9,Local Storage,我正在使用localStorage。我的代码在Chrome上运行得很好,但在IE9和Firefox上却不行 代码如下: document.addEventListener("DOMContentLoaded", restoreContents, false); document.getElementsByTagName("body")[0].onclick=function(){saveContents('myList','contentMain', event, this);}; funct
document.addEventListener("DOMContentLoaded", restoreContents, false);
document.getElementsByTagName("body")[0].onclick=function(){saveContents('myList','contentMain', event, this);};
function amIclicked(e, eleObject)
{
alert("amIClicked");
e = e || event;
var target = e.target || e.srcElement;
alert("target = " + target.id);
if(target.id=='pageBody' || target.id=='Save')
return true;
else
return false;
}
function saveContents(e, d, eveObj, eleObject) {
//alert("saveContents");
if (amIclicked(eveObj, eleObject)) {
var cacheValue = document.getElementById(e).innerHTML;
var cacheKey = "key_" + selectedKey;
var storage = window.localStorage;
//alert ("cacheKey = " + cacheKey + " ,cacheValue = " + cacheValue);
if(typeof(Storage)!=="undifined"){
localStorage.setItem("cacheKey","cacheValue");
}
//alert ("Saved!!");
var dd = document.getElementById(d);
//document.getElementById("contentMain").style.display == "none";
dd.style.display = "none";
}
}
function restoreContents(e,k) {
//alert("test");
if(k.length < 1) { return; }
var mySavedList = localStorage["key_" + k];
if (mySavedList != undefined) {
document.getElementById(e).innerHTML = mySavedList;
}
}
<a onclick="ShowContent('contentMain','myList','Sample_1'); return true;" href="#" >Sample 1</a><br/><br/>
<a onclick="ShowContent('contentMain','myList','Sample_2'); return true;" href="#" >Sample 2</a><br/><br/>
<div style="display:none;display:none;position:absolute;border-style: solid;background-color: white;padding: 5px;"id="contentMain">
<ol id="myList" contenteditable="true">
<li>Enter Content here</li>
</ol>
<!--<input id="editToggleButton" type="button" value="Edit"/>-->
</div>
我在Mozilla Firefox中遇到的错误是:
target is undefined
[Break On This Error]
alert("target = " + target.id);
我已经宣布了目标
<body id="pageBody">
太过混乱了检查本地存储是否存在的方式有点不正常,实际上可能无法检测到传统浏览器没有本地存储。下面,此代码中有拼写错误,例如“未定义”: 相反,以下是检查本地存储是否可用的正确方法:
if(window.localStorage) {
localStorage.setItem("cacheKey","cacheValue");
}
话虽如此,但在这种情况下,这并没有造成你的问题。相反,您指出调试器在此行中发现了一个错误:
if(k.length < 1) { return; }
该错误消息中的关键信息是对象为null。换句话说,您正在传递一个空值作为参数k的参数
DOMContentLoaded事件未传入此参数;因此,现在只需使用一个全局变量可能是最简单的,您可以从restoreContents
函数中访问它
另外,正如@omri在他的回答中指出的,+1顺便说一句,您将cacheKey作为字符串传递到localStorage,而不是作为表示密钥的实际变量。这是正确的用法:
localStorage.setItem(cacheKey, cacheValue);
这可能不是代码中的所有问题,但这应该可以帮助您开始。我能为您推荐的最好、最有用的技巧是,学习如何使用浏览器调试器,并学会识别错误消息的含义,因为我可以告诉您这是一个新手。如果有必要,用谷歌搜索错误消息。如果你能学会使用这些工具,你会发现识别某些问题并提出解决问题的计划会变得容易得多。祝你好运!:) 检查本地存储是否存在的方式有点不正常,实际上可能无法检测到传统浏览器没有本地存储。下面,此代码中有拼写错误,例如“未定义”: 相反,以下是检查本地存储是否可用的正确方法:
if(window.localStorage) {
localStorage.setItem("cacheKey","cacheValue");
}
话虽如此,但在这种情况下,这并没有造成你的问题。相反,您指出调试器在此行中发现了一个错误:
if(k.length < 1) { return; }
该错误消息中的关键信息是对象为null。换句话说,您正在传递一个空值作为参数k的参数
DOMContentLoaded事件未传入此参数;因此,现在只需使用一个全局变量可能是最简单的,您可以从restoreContents
函数中访问它
另外,正如@omri在他的回答中指出的,+1顺便说一句,您将cacheKey作为字符串传递到localStorage,而不是作为表示密钥的实际变量。这是正确的用法:
localStorage.setItem(cacheKey, cacheValue);
这可能不是代码中的所有问题,但这应该可以帮助您开始。我能为您推荐的最好、最有用的技巧是,学习如何使用浏览器调试器,并学会识别错误消息的含义,因为我可以告诉您这是一个新手。如果有必要,用谷歌搜索错误消息。如果你能学会使用这些工具,你会发现识别某些问题并提出解决问题的计划会变得容易得多。祝你好运!:) 这在任何浏览器中都有效吗?! 您将“cacheValue”作为字符串, 存储类型永远不会等于“未定义”(可能未定义),
而且变量selectedKey从未定义。这在任何浏览器中都有效吗?! 您将“cacheValue”作为字符串, 存储类型永远不会等于“未定义”(可能未定义),
而且变量selectedKey从未定义过。我已经尝试了几个步骤:)对于本地存储,我们需要http,只有它在IE9中才能工作 但最后,在Tomcat的帮助下,我创建了http:从那里我运行了localstorage html文件,它工作得很好 谢谢在这里支持我的人 多谢各位
m我已经尝试了几个步骤:)对于本地存储,我们需要http,只有它才能在IE9中工作 但最后,在Tomcat的帮助下,我创建了http:从那里我运行了localstorage html文件,它工作得很好 谢谢在这里支持我的人 多谢各位
m打字错误可能是导致您出现问题的原因吗
if(typeof(Storage)!==“Undefined”){
Undefined拼写错误。不确定这在Chrome中是如何工作的。这是您实际的、真实的代码吗?您正在使用localhost吗?localstorage仅在HTTP网站上可用。@eric.itzhak localhost通过HTTP(我在localhost上使用过localstorage)你大概是说filesystem@eric.itzhak-文件://
!=http://localhost
。它不起作用的地方是根本没有Web服务器,而您使用的是文件协议。Localhost仍然使用http,应该可以工作。我的意思是FileTystem,我的坏:)打字错误可能是导致您出现问题的原因吗?if(typeof(Storage)==“Undefined”){
Undefined拼写错误。不确定这在Chrome中是如何工作的。这是您真实的代码吗?您正在使用localhost吗?localstorage仅在HTTP网站上可用。@eric.itzhak localhost通过HTTP(我在localhost上使用过localstorage)你大概是说filesystem@eric.itzhak-文件://
!=http://localhost
。它不起作用的地方是根本没有Web服务器,而您使用的是文件协议。Localhost仍然使用http,应该可以工作。我的意思是FileTystem,我的坏:)hi jmort,当我尝试在iexplore函数restoreContents(e,k)中调试时{//alert(“test”);if(k.length<1){return;}var mySavedList=localStorage[“key_”+k];if(mySavedList!=undefined){document.getElementById(e).innerHTML=mySavedList;}}}当我在ie9中调试时,如果(k.length<1){return;}@maha-您应该遵循下面的命令,我会得到这一行错误