Сохранять переменные javascript на разных страницах?

Есть ли способ сохранить переменные javascript на разных страницах? Предположим, что в Page A я устанавливаю window.someVar = 5. Затем я перехожу на страницу B, нажимая гиперссылку в и делаю что-то вроде alert(window.someVar) - мне нужно отобразить окно сообщения 5. Есть ли способ сохранить someVar как таковой...?

Ответ 1

Вы можете использовать имя окна window.name для хранения информации. Это называется сеанс JavaScript. Но он работает только при условии использования одного и того же окна/вкладки.

Ответ 2

Для полноты ознакомьтесь также с возможностями локального хранилища и sessionStorage HTML5. Они поддерживаются в последних версиях всех современных браузеров и намного проще в использовании и менее затруднительны, чем файлы cookie.

http://www.w3.org/TR/2009/WD-webstorage-20091222/

Вот пример кода для настройки и получения значений с помощью sessionStorage и localStorage:

 // HTML5 session Storage
 sessionStorage.setItem("variableName","test");
 sessionStorage.getItem("variableName");


//HTML5 local storage 
localStorage.setItem("variableName","Text");
// Receiving the data:
localStorage.getItem("variableName");

Ответ 3

Я бы порекомендовал вам посмотреть на эту библиотеку:

Мне это очень нравится, он поддерживает множество хранилищ (от файлов cookie до хранилища HTML5, Gears, Flash и т.д.), его использование действительно прозрачно, вам не нужно знать или заботиться о том, какие бэкэнд используется библиотека, которая выберет правильную базу данных хранилища в зависимости от возможностей браузера.

Ответ 4

Да, используя Cookies. Но будьте осторожны, не вкладывайте слишком много в них (я думаю, что есть предел на 4kb). Но несколько переменных в порядке.

Если вам нужно хранить значительно больше, проверьте @Annie большие подсказки в другом ответе. Для хранения данных небольшого времени я бы сказал, что файлы cookie - самая легкая вещь.

Обратите внимание, что файлы cookie хранятся на стороне клиента.

Ответ 5

Вы можете сохранять значения, используя хранилище HTML5, Flash Storage или Gears. Библиотека dojo storage предоставляет для этого хорошую оболочку.

Ответ 6

Я рекомендую веб-хранилище. Пример:

// Storing the data: localStorage.setItem("variableName","Text"); // Receiving the data: localStorage.getItem("variableName");

Просто замените variable своим именем переменной и text на то, что вы хотите сохранить. Согласно W3Schools, это лучше, чем файлы cookie.

Ответ 7

Вы можете использовать http://rhaboo.org в качестве обертки вокруг localStorage. Он хранит сложные объекты, но не просто строит и анализирует все, как это делают большинство подобных библиотек. Это действительно неэффективно, если вы хотите хранить много данных и добавлять к ним или изменять его в небольших кусках. Кроме того, JSON отбрасывает много важных вещей, таких как нечисловые свойства массивов.

В rhaboo вы можете писать такие вещи:

var store = Rhaboo.persistent('Some name');

store.write('count', store.count ? store.count+1 : 1);

var laststamp = store.stamp ? store.stamp.toString() : "never";
store.write('stamp', new Date());

store.write('somethingfancy', {
  one: ['man', 'went'],
  2: 'mow',
  went: [  2, { mow: ['a', 'meadow' ] }, {}  ]
});

store.somethingfancy.went[1].mow.write(1, 'lawn');
console.log( store.somethingfancy.went[1].mow[1] ); //says lawn

Кстати, я написал rhaboo