9

我有一个 Web 应用程序 (ASP.NET MVC3),它使用带有 cookie 插件的 jquery ui 选项卡控件(如此处所示

创建选项卡时,我使用 path 选项设置 cookie 的路径:

$("#tabs").tabs({ cookie: { path: '/A/' } });

在 Firefox 中,这可以正常工作。无论“/A/”(例如“A/B/C”)之后的 URL 是什么,选项卡控件始终正确记住上次选择的选项卡并在我重新加载页面时切换到它。

但是,在 Chrome (v21) 上,有时浏览器会添加另一个具有不同路径的选项卡 cookie。然后我最终得到了两个 cookie,一个具有我最初创建的路径“/A/”,另一个具有路径“/A/B/”,这是我当前所在的 url。不幸的是,这个“双重 cookie”似乎会导致在页面刷新时有时会加载错误的选项卡,因为这两个 cookie 似乎有冲突。

有什么办法可以防止chrome中的这种行为?我尝试了几种编程解决方案(例如,如果路径包含“/A/”,则强制路径指向“/A/”,但由于从未到达该代码,似乎 chrome 正在自动执行此操作)。

谢谢您的帮助!

似乎问题在于chrome无法区分不同路径上具有相同名称的cookie;所以我在我的应用程序中拥有的另一个选项卡控件把事情搞砸了。一旦我给 cookie 起了一个独特的名字,事情就开始正常工作了!

4

1 回答 1

2

我刚刚将一个示例推送到 GitHub 存储库。似乎它在我的 Linux 下的 Chrome 21 中运行良好。

第一条路径截图

第二条路径截图

如果您使用的是 jQuery UI >= 1.7,那么将具有一些独特值(例如“my-absolutely-unique-cookie”)的属性“name”添加到您传递的 cookie 对象中,看看它是如何进行的:

$("#tabs").tabs({
    cookie: {
        name: 'my-unique-cookie',
        // store cookie for a day, without, it would be a session cookie
        expires: 1,
        path: '/tabs'
    }
});
于 2012-08-13T16:37:00.337 回答