2012-03-19 1 views
0

Я пишу веб-страницу, на которой хранятся постоянные данные. В IE я могу просто использовать Userdata Behavior для хранения данных или объектов. Кроме того, Userdata Behavior предлагает методы getAttribute и setAttribute для настройки сохраненных объектов.getAttribute Метод поведения пользовательских данных и localStorage в firefox

Но он не поддерживается firefox. С localStorage я могу хранить строки только с уникальным ключом. Мой вопрос: возможно ли настраивать объекты, хранящиеся в localStorage, с помощью подобных методов, таких как getAttribute или setAttribute?

Я хочу, чтобы преобразовать следующий код в новый, который должен wok под firefox с помощью localStorage. Но я понятия не имею, как преобразовать методы 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]; 
} 

В основном все эти две функции, приведенные выше, для чтения & записи в объект JavaScript хранится в LocalStorage (закодированный в формате JSON для целей хранения)

Вашей функция мог бы быть записана как:

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

Обратите внимание, что я написал весь этот код безотносительно, поэтому в нем может быть несколько опечаток/ошибок.

+0

спасибо. Вы спасли мое время. Это именно то, что мне нужно. Я изменил одну строку, и она отлично работает. if (typeof window.localStorage.mydata == 'undefined' || window.localStorage.mydata == null) window.localStorage.mydata = '{}'; – user1279271

Смежные вопросы