2013-09-24 3 views
3

Итак, у меня есть несколько страниц, которые используют localStorage. На первой странице он создает первый элемент localStorage:localStorage в Firefox

$('#id').click(function(){ 
    localStorage.text = $(this).val(); 
}); 

Эта часть кода прекрасно работает во всех браузерах.

Теперь на следующей странице, я добавляю больше данных в хранилище:

$('#someid').click(function(e) { 
// stores variables in localStorage 
     localStorage.background = img; 
     localStorage.fSize = fontSize; 
     localStorage.text = t; 
     localStorage.textX = Tx; 
     localStorage.align = alignVal; 
     localStorage.rotationAngle = Deg; 

    window.location = 'somepage.php'; 

По какой-то причине эта часть не работает в Firefox (любой версии), но работает отлично в IE и Chrome.

В чем может быть проблема? И можно ли исправить это, если вместо этого использовать sessionStorage?

Спасибо.

Хорошо. вот обновление: я использую переменные localStorage для заполнения формы php на второй странице и после этого очищаю память. Если я не очищу хранилище - все будет хорошо. Есть ли способ очистить хранилище только после того, как все переменные были скопированы в форму?

+1

Ваше значение «img» является URL-адресом или фактическим изображением? localStorage может принимать только строки в качестве значений. – K3N

+0

все значения являются фактическими строками. Как я уже сказал, это работает в любом другом браузере, кроме Firefox. Главный вопрос заключается в том, как заставить его работать в Firefox. –

+0

Есть ли ошибки? – karaxuna

ответ

1

мне удалось получить эту работу в FireFox, используя следующий код:

Preview: http://barriereader.co.uk/localstoragetest/

Код:

$('#someid').on('click', function(e) { 
     window.localStorage.setItem('background', img); 
     window.localStorage.setItem('fSize', fontSize); 
     window.localStorage.setItem('text', t); 
     window.localStorage.setItem('textX', Tx); 
     window.localStorage.setItem('align', alignVal); 
     window.localStorage.setItem('rotationAngle', Deg); 

     window.location = 'page2.html'; 
    }); 

и извлекать и удалять последовательно:

if (window.localStorage.getItem('background')) { 
    var backgroundVariable = window.localStorage.getItem('background'); 
    window.localStorage.removeItem('background'); 
} 
+0

ну в моем случае мне удалось исправить это, просто добавив функцию таймаута перед перенаправлением на следующую страницу. Поскольку одна из переменных была довольно большой объем данных, и, как я полагаю, Firefox просто работает с localStorage намного медленнее, чем другие браузеры –

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