Storage.prototype не работает в IE8 - PullRequest
2 голосов
/ 16 февраля 2012

Я пытался заставить это работать в IE8, и хотя он не жалуется на них, он полностью игнорирует их.

if( typeof(Storage) != "undefined"){
    Storage.prototype.setObject = function(key, value) {
          this.setItem(key, escape(JSON.stringify(value)));
    }   

    Storage.prototype.getObject = function(key) {       
        return JSON.parse(unescape(this.getItem(key)));
    }
}

Когда я пытаюсь:

localStorage.setObject("key", <Some object>);

Iвозникла ошибка «Объект не поддерживает этот метод», и функция даже не вызывается.Конечно, этот код прекрасно работает в Chrome и Firefox и, возможно, даже на моих часах Casio 1980-х годов.

Любая помощь будет великолепной.

Случайный и совершенно не связанный с IE8, когда я получаю свой объект назад, янадо JSON.parse дважды, чтобы получить объект ...

Спасибо, Пол

1 Ответ

6 голосов
/ 16 февраля 2012

Вам лучше использовать отдельную функцию, а не связываться с прототипом встроенного объекта.

function storeObject(key,obj) {
    localStorage[key] = JSON.stringify(obj);
}
function retrieveObject(key) {
    return JSON.parse(localStorage[key]);
}

Это более надежно, чем операции с прототипами, особенно в старых браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...