我有一个Web应用程序(ASP.NET MVC3),它使用jquery ui tab控件和cookie插件(如演示here)。
创建选项卡时,使用path选项设置cookie的路径:
$("#tabs").tabs({ cookie: { path: '/A/' } });
在Firefox中,这可以正常工作。无论“/ A /”(例如“A / B / C”)之后的网址是什么,标签控件始终会正确记住上次选择的标签,并在重新加载页面时切换到该标签。
但是,在Chrome(v21)上,浏览器偶尔会添加另一个带有不同路径的标签Cookie。然后我最终得到两个cookie,一个是我最初创建的路径“/ A /”,另一个是路径“/ A / B /”,这是我目前正在使用的URL。不幸的是,似乎这个“双cookie”导致错误的选项卡有时会在页面刷新时加载,因为这两个cookie似乎有冲突。
有没有办法阻止Chrome中的这种行为?我已经尝试了几种编程解决方案(例如,如果路径包含“/ A /”,则强制路径为“/ A /”,但由于该代码永远不会到达,因此Chrome似乎自动执行此操作)。
感谢您的帮助!
似乎问题是chrome不区分不同路径上具有相同名称的cookie;所以我在我的应用程序中的其他选项卡控件搞乱了。一旦我给了cookie一个独特的名字,事情就开始正常工作了!
答案 0 :(得分:2)
我刚刚将example推送到GitHub存储库。 似乎它在Linux下的Chrome 21中运行良好。
如果您正在使用jQuery UI> = 1.7,那么将属性“name”添加到您正在传递的Cookie对象中,并使用“my-absolute-unique-cookie”之类的唯一值,并查看其结果:
$("#tabs").tabs({
cookie: {
name: 'my-unique-cookie',
// store cookie for a day, without, it would be a session cookie
expires: 1,
path: '/tabs'
}
});