Объект хранения (как localStorage, так и sessionStorage) доступен на всех вкладках, имеющих одну и ту же страницу.
Однако (некоторые комментарии указывают, что это неверно, но это неверное истолкование документации), когда вы открываете новую вкладку, создается новый объект хранения. Это клон первого, поэтому контент в этой точке тот же.
Их обрабатывают отдельно от этой точки, но вы синхронизируете их, слушая storage
event в своем коде.
От http://dev.w3.org/html5/webstorage/#the-sessionstorage-attribute: (обратите внимание, что данные адресуют реализаторы)
Когда новый контекст просмотра верхнего уровня создается путем клонирования существующего контекста просмотра, новый контекст просмотра должен начинаться с в те же области хранения сеанса, что и оригинал, но два набора должны с этой точки зрения считаться раздельными, не затрагивая друг друга в в любом случае. [...] Когда методы setItem(), removeItem() и clear() вызывают в объекте Х хранения, который связан с областью хранения [...], , то для каждого объекта документа, Окно Объект объекта objectStorage объекта хранения связан с той же областью хранения, кроме x, отправляет уведомление о хранении.
То есть, что, когда хранение модифицируется в активной вкладке, storage
событие посылается на все остальные вкладки (для того же происхождения) - но не активной вкладки, которые, конечно, не нужен поскольку это тот, который изменяется.
Используйте event читать key
и newValue
поля для обновления localSession
в настоящее время неактивной вкладки (ы) (есть также в oldValue
на мероприятии).storageArea
содержит объект хранения, на который влияет (полезно, если вы используете как локальное, так и хранилище сеансов).
Что касается "одного домена" - да, те же самые данные будут доступны только для того же происхождения (схема, домен и порт).
Отправка данных на сервер полностью возможна. Все, хранящиеся в хранилище (сеансовом и локальном), хранятся в виде строки. Я бы рекомендовал кодировать его, хотя (JSON не необходимо, поскольку он уже хранится в виде строки). Используйте f.ex:
var dataForServer = encodeURIComponent(sessionStorage.getItem(myKey));
Затем отправьте его как часть формы, url или ajax.
Запросы ajax приходят на ум. –