2015-07-19 1 views
0

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

var link = window.open('url'); 
link.myVar = myObj; 

или

document.cookie.set('someVar', myObj); 

и в другом окне:

document.cookie.get('someVar'); 
+1

Лучшее, что вы имеете в наличии есть 'JSON.stringify', но имейте в виду, что он не может сериализация вещи, как функции или некоторых сложных структур. Это хорошо в большинстве случаев. –

ответ

1

Куки может содержать только строки. Они предназначены для передачи в заголовках HTTP.

Вы можете передавать более сложные структуры данных, кодируя их как строки (например, с помощью JSON.stringify), но ссылка на другое окно не может быть и речи.

1

Я хочу, чтобы передать объект из одного окна в другое

Вы находитесь на правильном пути с вашим кодом, но вы пытаетесь дать окно ссылку на объект слишком рано , Вы можете ждать его для загрузки:

var link = window.open('url'); 
link.onload = function() { 
    link.myVar = myOb; 
}; 

load события происходит довольно поздно в процессе, хотя, так что я бы, наверное, окно, который открываемый запросу объект, как только он может:

// In the window being opened: 
var myVar = opener.obj; 

Вместо того чтобы использовать переменную непосредственно, я бы, вероятно, использовать функцию для инкапсуляции, что:

// In the window being opened: 
var myVar = opener.getObject(); 

Все, что будет работать только для окон в такое же происхождение, которое я предполагаю, если вы думаете о куках. Вы также можете использовать cross-window messaging, если окна не совпадают.

Просто для полноты:

можно записать объект в браузере куки?

Файлы cookie могут содержать только строки. Вы можете сериализовать свой объект с помощью JSON.stringify или аналогичного, но я бы не использовал файлы cookie для обмена сообщениями в кросс-окнах.

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