2012-03-19 51 views
0

我在寫一個應該存儲持久數據的網頁。在IE中,我可以簡單地使用用戶數據行爲來存儲數據或對象。此外,用戶數據行爲提供了getAttribute和setAttribute方法來定製存儲的對象。getAttribute在Firefox中用戶數據行爲和localStorage的方法

但它不支持Firefox。通過localStorage,我只能存儲具有唯一密鑰的字符串。我的問題是:是否可以通過使用類似的方法來定製存儲在localStorage中的對象,如getAttribute或setAttribute?

我想通過使用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

我真的不知道了一大堆有關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的(編碼爲JSON用於存儲目的)JavaScript對象

你的函數然後可以寫爲:

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

請注意,我寫了所有這些代碼,所以可能會有一些錯別字/錯誤。

+0

非常感謝。你節省了我的時間。這正是我需要的。我修改了一行,它完美地工作。如果(typeof window.localStorage.mydata =='undefined'|| window.localStorage.mydata == null)window.localStorage.mydata ='{}'; – user1279271 2012-03-19 20:36:09