2014-05-29 4 views
0

Мне нужно разделить Cookie значение между различными вкладками браузера (такое же приложение). Я работал и обнаружил, что на другой вкладке можно использовать только cookie, заданный 1-й вкладкой, если обновлена ​​вторая вкладка. Но в моем случае я не могу позволить обновить вкладку (& я не могу использовать сеансы). Есть ли способ поделиться файлом cookie другим способом? (то есть, как только печенье будет установлено на одной вкладке, другая вкладка может использовать его, без необходимости обновления).Совместное использование Cookie среди вкладок браузера без обновления вкладки

Другое сообщение в SO сказано, one must continuesly poll cookie, in order to share. но я не мог понять, что они означают poll. может это опрос вещь помощь в моем случае?

+0

так что цель освежать эти печенья во всех вкладках? вы можете использовать плагин SignalR. –

+0

@DotNetIsMyPower я не упомянул об обновлении cookie, но чтобы делиться файлами cookie с различными вкладками браузера. Помогает ли SignalR в моем случае? – Zeeshan

+0

Я не уверен, что я понимаю необходимость создания cookie для совместного использования. Если вы установите значение для объекта на одной вкладке, оно должно быть доступно во всех вкладках, правильно? Вы можете по крайней мере заставить проблему перейти с вкладки на вкладку. –

ответ

0

Как-то, опрашивает сервер может не помочь в моем сценарии (разные вкладки, то же самое приложение). Я решил это с помощью библиотеки, получившей название store.js. Для этого не требуется сервер опроса и прочее, вместо этого куки-файлы просто мгновенно делятся на вкладки, очень скоро, когда они установлены на любой из открытых вкладок. и, прежде всего, то, что мне понравилось в этом, заключается в том, что store.js использует localStorage, когда он доступен, и возвращается к поведению userData в IE6 и IE7. Нет вспышки, чтобы замедлить загрузку страницы. Нет файлов cookie для оттачивания сетевых запросов. store.js зависит от JSON для сериализации на диск. Это очень просто использовать.

Пример использования:

store.set('username', 'joe') 
document.write('username: ' + store.get('username') + '<br />') 
store.remove('username') 
store.clear() 
store.set('user', { name: 'joe', likes: 'javascript' }) 
var user = store.get('user') 
document.write(user.name + ' likes ' + user.likes) 
1

Опрос будет проверяться на сервере или другой серверной службе, чтобы узнать, есть ли новые файлы cookie.

Итак, вкладка 1 создает файл cookie, и вы сообщаете сервер нового файла cookie. Когда вкладка 2 «опроса» сервера, то есть через регулярный запрос ajax, вы можете установить cookie на вкладке 2.

Это также можно сделать с помощью webstorage. Я считаю, что 2 вкладки одной и той же страницы имеют один и тот же веб-ресурс, поэтому вы может «опросить» веб-сайт без необходимости ajax, а также не нужно ничего отправлять по проводам. Это быстрее, но тогда вам придется обрабатывать настройку файла cookie вручную на вкладке «2» или «прослушивание». В качестве альтернативы, если вы использовали webstorage для всего хранилища, вы можете полностью отключить куки, если вам не нужны они, чтобы идентифицировать себя вне/клиент/онлайн-сервис/сервер.

http://www.w3schools.com/html/html5_webstorage.asp

Can an AJAX response set a cookie?

+0

Спасибо, Роб. Не могли бы вы рассказать мне, как я могу опросить сервер, когда установлен новый файл cookie? Я попытался посмотреть, но ничего не помогло. (я использую MVc 4, и файлы cookie устанавливаются и входят в тег Jquery script). – Zeeshan

+0

Попробуйте этот jsfiddle на 2 вкладках, он должен работать. По крайней мере, это для меня в Chrome. http://jsfiddle.net/robschmuecker/8vXKC/ –

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