我正在编写一个应该存储持久数据的网页。在IE中,我可以简单地使用Userdata Behavior来存储数据或对象。此外,Userdata Behavior提供了getAttribute和setAttribute方法来自定义存储的对象。
但是firefox不支持它。使用localStorage,我只能使用唯一键存储字符串。我的问题是:是否可以使用类似的方法(如getAttribute或setAttribute)自定义存储在localStorage中的对象?
我想将以下代码转换为一个应该使用localStorage在firefox下运行的新代码。但我不知道如何转换setAttribute和getAttribute方法。任何的想法?非常感谢提前。
<style type="text/css">
.storeuserData {
behavior: url(#default#userData);
</style>
<script type="text/javascript">
function fnSaveInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.setAttribute("sPersist",oPersist.value);
oPersist.save("oXMLBranch");
}
function fnLoadInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.load("oXMLBranch");
oPersist.value=oPersist.getAttribute("sPersist");
}
</script>
</head>
<body>
<form id="oPersistForm">
<input class="storeuserData" type="text" id="oPersistInput">
<input type="button" value="Load" onclick="fnLoadInput()">
<input type="button" value="Save" onclick="fnSaveInput()">
</form>
答案 0 :(得分:0)
我对IE的实现并不是很了解,但对于本地存储,您可以尝试这样的事情:
function setDataValue(attr, value){
//If local stoarge var doesn't exist, create it
if(typeof window.localStorage.mydata == 'undefined') window.localStorage.mydata = '{}';
//Read data from local storage in to object
var data = JSON.parse(window.localStorage.mydata);
//update object
data[attr] = value;
//save object back in to local storage
window.localStorage.mydata = JSON.stringify(data);
}
function getDataValue(attr){
return JSON.parse(window.localStorage.mydata)[attr];
}
基本上上面所有的两个函数都是read&amp;写入存储在localstorage中的JavaScript对象(为了存储目的而编码为JSON)
您的功能可以写成:
function fnSaveInput(){
var oPersist=oPersistForm.oPersistInput;
setDataValue('sPersist', oPersist.value);
}
function fnLoadInput(){
var oPersist=oPersistForm.oPersistInput;
oPersist.value = getDataValue('sPersist');
}
请注意,我手写了所有这些代码,因此可能会有一些错别字/错误。