2012-03-05 3 views
0

Я хочу использовать локальное хранилище сеансов для сохранения состояния в своем веб-приложении, особенно если/когда пользователь открывает несколько вкладок в своем браузере.с использованием локальной сессии для поддержания состояния

У меня есть некоторые данные, которые вводятся в HTML на сервере. В document.ready части страницы, у меня есть что-то вроде этого:

MyStorage = window.sessionStorage; 
MyStorage.setItem('MyVar', $('#TheVar').html()); 

Если позже я пишу это:

ThisVar = MyStorage.getItem('MyVar'); 
ThisVar = 3; 

Будет ли значение в памяти сессии также стали 3? И будет ли значение всех переменных ThisVar в других вкладках также равным 3, когда я изменю значение ThisVar на одной вкладке?

Спасибо.

+0

Нет, потому что вы меняете локальную переменную ThisVar, вы должны записать значение обратно в ваш сеанс. –

ответ

3
  1. Нет, потому что вы присваиваете новое значение ThisVar, а не пары в sessionStorage ключ-значение.
  2. Нет, переменные не обновляются магическим образом. getItem возвращает значение, таким образом, строку сохраненного ключа.
+0

Тогда есть способ назначить свою ссылку? – frenchie

+0

@frenchie Вы должны использовать 'sessionStorage.getItem ('MyVar')' всякий раз, когда вы хотите получить последнее значение. –

+1

ОК, спасибо, я понял. Он будет работать только для объектов, поскольку объекты являются ссылочными типами, но sessionStorage работает только со строками, и они передаются только по значению; это верно? – frenchie

0
  1. пытаются избежать верхнийРЕГИСТР переменных, это именование-конвенция только для классов.
  2. используйте ключевое слово var, чтобы инициализировать переменные.

  3. (ответ на ваш вопрос) №. Вы не работаете над ссылками, функция localStorage.getItem() возвращает значение как строку, а не как ссылку. Вам необходимо использовать функцию localStorage.setItem(), как вы это делали, чтобы обновить хранилище. Поэтому я бы рекомендовал вам работать непосредственно на хранилище, а не использовать дополнительные переменные. (С другой стороны, вы можете использовать функцию, которая обновляет хранилище при изменении значения вашей переменной.)

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