0

我正在编写一个应该存储持久数据的网页。在 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>
4

1 回答 1

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];
}

基本上,上面的所有两个函数都是读取和写入存储在 localstorage 中的 JavaScript 对象(为了存储目的而编码为 JSON)

然后你的函数可以写成:

function fnSaveInput(){
    var oPersist=oPersistForm.oPersistInput;
    setDataValue('sPersist', oPersist.value);
}
function fnLoadInput(){
    var oPersist=oPersistForm.oPersistInput;
    oPersist.value = getDataValue('sPersist');
}

请注意,我徒手编写了所有这些代码,因此其中可能存在一些拼写错误/错误。

于 2012-03-19T19:04:20.447 回答