Ответ 1
Вы можете использовать имя окна window.name
для хранения информации. Это называется сеанс JavaScript. Но он работает только при условии использования одного и того же окна/вкладки.
Есть ли способ сохранить переменные javascript на разных страницах? Предположим, что в Page A я устанавливаю window.someVar = 5
. Затем я перехожу на страницу B, нажимая гиперссылку в и делаю что-то вроде alert(window.someVar)
- мне нужно отобразить окно сообщения 5. Есть ли способ сохранить someVar
как таковой...?
Вы можете использовать имя окна window.name
для хранения информации. Это называется сеанс JavaScript. Но он работает только при условии использования одного и того же окна/вкладки.
Для полноты ознакомьтесь также с возможностями локального хранилища и 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");
Я бы порекомендовал вам посмотреть на эту библиотеку:
Мне это очень нравится, он поддерживает множество хранилищ (от файлов cookie до хранилища HTML5, Gears, Flash и т.д.), его использование действительно прозрачно, вам не нужно знать или заботиться о том, какие бэкэнд используется библиотека, которая выберет правильную базу данных хранилища в зависимости от возможностей браузера.
Да, используя Cookies. Но будьте осторожны, не вкладывайте слишком много в них (я думаю, что есть предел на 4kb). Но несколько переменных в порядке.
Если вам нужно хранить значительно больше, проверьте @Annie большие подсказки в другом ответе. Для хранения данных небольшого времени я бы сказал, что файлы cookie - самая легкая вещь.
Обратите внимание, что файлы cookie хранятся на стороне клиента.
Вы можете сохранять значения, используя хранилище HTML5, Flash Storage или Gears. Библиотека dojo storage предоставляет для этого хорошую оболочку.
Я рекомендую веб-хранилище. Пример:
// Storing the data:
localStorage.setItem("variableName","Text");
// Receiving the data:
localStorage.getItem("variableName");
Просто замените variable
своим именем переменной и text
на то, что вы хотите сохранить. Согласно W3Schools, это лучше, чем файлы cookie.
Вы можете использовать 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