如何在cookie中存储窗口引用?

时间:2014-08-08 08:46:48

标签: javascript jquery cookies jquery-cookie

我正在打开一个窗口

winRef = window.open(......);

然后我将上面的winRef存储在cookie中,这样即使父级刷新,我也可以获得对子窗口的引用。

这不起作用,因为当我尝试在cookie中保存winRef时,它只保存对象的text representation/string,因此您只有"[object Window]"作为字符串,它不是对象。

有没有办法将窗口引用存储为cookie?如果不可能,那么我可以使用哪些其他可能的方法?

PS:我认为在cookie中只存储窗口名而不是窗口对象可以解决问题,但在我的情况下无法完成,我无法提供窗口名称,基本上窗口是在线编辑器,如果我给它一个特定的名字,那么用户就无法打开多个在线编辑器,因为它总会重新加载当前打开的窗口。

终极目标:Retrieving references to child window if the parent refreshes

2 个答案:

答案 0 :(得分:4)

首先请原谅我可怜的英语;-)

此问题的可能解决方法是在window.open函数中设置名称(例如:popup = window.open(URL, popup_window, specs, replace) 然后将弹出窗口保存在cookie中。 检索Cookie时,您将按照说明获得[object Window]

例如:popup = getCookie('popup');

执行以下操作后:

    if (popup == null) {
        //No popup
    } else {
        //Popup exist, retrieving is ref
        popup = window.open("" ,"popup_window");
    }

只重用window.open函数,只使用相同的名称(popup_window)而不使用其他参数,因为此窗口已经存在,只要返回popup_window引用,就不会执行进一步的操作

答案 1 :(得分:2)

变量是存在于主存储器(也称为RAM)以及正在运行的进程或线程范围内的抽象。你无法将它们存储在其他任何地方。

特别是,cookie是纯文本。它们作为HTTP标头发送,并且通常存储在文本文件中。所以回答你的问题:不,你不能在cookie中存储JavaScript object of type window