2012-07-26 40 views
2

不知道如何做到这一点,我在页面上的链接上设置了一个jQuery cookie,然后打开一个新窗口。因此在窗口1上 - Cookie值设置为XXX。车窗2一个页面,用户可以更新此cookie值的任何东西,即XYXYYY在新窗口中记住我的jQuery Cookie值

所以我希望能够与更新窗口1 cookie的值是什么,用户在窗口中改变2.

目前我有2个窗口与$.mycookie(test, xxx)$.mycookie(test, yyy)。如果用户关闭窗口2没有更新他的改变窗口1.

回答

1

要明确地让供站点上的所有路径的饼干,确保路径设置:

$.cookie("example", "foo", { path: '/' }); 

将其限制在一个而不是具体路径:

$.cookie("example", "foo", { path: '/foo' }); 

如果设置为“/”,cookie将整个域范围内可用。如果设置为'/ foo /',则cookie将仅在/ foo /目录和所有子目录(如/ foo/bar/of域)中可用。默认值是设置cookie的当前目录。

+0

是的,我已经把我的路径“/”,而是通过在窗口2改变我的cookie值在窗口没有更新我的cookie的值1 – user1010701 2012-07-26 12:37:35

+0

@ user1010701我似乎无法理解您的cookie未更新的原因。可能cookie会过期。你可以试试:$ .cookie('example','value',{expires:14,path:'/'});?这会将到期时间设置为+14天。 – 2012-07-26 13:05:27

+0

我需要刷新我的父窗口,当我关闭子窗口,所以使用window.opener.location.reload();刷新我的cookie,这工作 – user1010701 2012-07-26 14:14:26

0

你是对的,你需要刷新开启者窗口。

Window-1通过javascript打开Window-2(弹出窗口),并且此弹出窗口需要有一个函数,当它关闭时触发unload事件并且/或者单击了刷新父窗口的按钮/链接。只有刷新后才能更改以这种方式进行的Cookie更改。

简单的窗口-2示例:

<script> 
function whatever() { 
    $.cookie("test", $('input[name=cookievalue]').val()); 
    if (window.opener != null) { 
     window.opener.location.reload(); 
     window.close(); 
    } 
} 

$('button[name=clicker"]').bind('click', function(){ 
    whatever(); 
}); 

/* optionall you can also do an unload event, 
* but you should probably check if you ran whatever() more then 
* once and not run it a second time. 
*/ 
$(window).unload(function(){ 
    whatever(); 
}); 
</script> 

<input type="text" value="" name="cookievalue"> 
<button name="clicker">Change Cookie and close</button> 
+0

谢谢安东尼,非常有用,我会试试这个,并会让你知道我是怎么做到的。 – user1010701 2012-07-30 14:42:39