【发布时间】:2013-02-19 23:35:52
【问题描述】:
所以过去几天我一直在寻找这个问题的答案。这是我第一次尝试饼干,所以我希望这对你们来说很容易。我有一个网站询问用户是否要使用该网站的移动版本,并将他们的响应存储在 cookie 中,以便下次访问时,他们会自动转到首选版本。然而,在移动网站上,我在桌面网站上提供了一个返回“/desktop.html”的链接,该链接将他们的偏好重置为该网站的桌面版本,然后加载他们在移动网站上所在页面的相应桌面版本.这一切都很好,但我很快发现 cookie 计划不起作用。用户将自动被重定向回移动站点。我发现这是因为“desktop.html”位于站点的根级别,而所有其他页面都位于子目录中。所以我读到你可以通过附加“;path=/;”来使cookies全局化到饼干。我对所有页面都这样做了。然而,尽管我从浏览器中清空了我的 cookie 并重新开始,但我仍然被退回到移动网站(尽管每次都设置了 cookie,但我什至每次去桌面网站时都会被问到我的偏好),所以我决定通过将 cookie 值放在子目录中的页面中的警报中来检查 cookie 值,并且每次加载子目录中的任何页面时,cookie 已为空/空。如果我删除“;path=/;”,那么我访问的 cookie 将具有我在上一页加载时设置的值,并且除了 /desktop.html 中的显式重置之外一切正常。我想我一定不能访问我之前设置的“全局”cookie。我发现的所有页面都说使用“;path=/;”设置全局cookie字符串,但我找到的所有页面似乎都没有告诉我如何在后续页面加载时访问它 - 或者我只是太菜鸟了,没有意识到我做错了什么。
这是 /desktop.html 中的代码
<body style="background: rgb(165, 183, 156); margin: 0pt;" onload="document.cookie = 'desktop; path=/';alert('Preference saved. To get back to the mobile site, click the mobile icon in the bottom left corner.');window.location.href='index.html';">Desktop Preference Saved</BODY>
这是子目录中所有页面中的代码:
<body style="background: rgb(165, 183, 156); margin: 0pt; " onload="onPageLoad();if(document.cookie.length != 0){if(document.cookie.match('mobile') && isMobile.any()){window.location.href=getMobileURL()}}else if(isMobile.any() && confirm('Go to mobile version of site?\nNote: menu navigation on the regular website does not work on a touch screen.')){window.location.href=getMobileURL();document.cookie = 'mobile; path=/';}else{document.cookie = 'desktop; path=/';if(isMobile.any()){alert('Preference saved. To get to the mobile site, click the mobile icon in the bottom left corner.');}}" onunload="onPageUnload();">
我认为它们不相关,但如果您需要查看函数 getMobileURL() 和 isMobile.*,请告诉我。
谢谢, 抢
【问题讨论】:
-
你不设置值基本上是在删除cookie吗?
document.cookie = 'desktop=true;... -
我不确定。如果不提供值会删除 cookie,那么当我不附加“;path=/;”时,为什么 cookie 会起作用?我会尝试设置 true ,看看会发生什么。感谢您的提示。
-
哇。我不认为它会起作用,但它确实起作用了!我曾认为 cookie 是一个简单的字符串,我可以根据需要设置/获取/&解析。尽管如此,它让我将 cookie 设置为没有值的名称并且它可以工作,这似乎很奇怪,但如果你将属性附加到它,它会删除它......
-
您可以将其添加为答案吗?再过 5 个小时,我无法回答自己的问题。
标签: javascript cookies path get global