我正在设置全局cookie,但似乎无法在后续页面加载时访问它们

时间:2013-03-05 14:13:10

标签: javascript cookies path get global

所以我在过去的几天里一直在寻找答案。这是我第一次涉足cookie,所以我希望这对你们来说很容易。我有一个网站询问用户是否要使用该网站的移动版本并将其响应存储在cookie中,以便下次访问时,他们会自动转到他们的首选版本。但是,在移动网站上,我在桌面网站上提供了一个返回“/desktop.html”的链接,该链接会重置他们对网站桌面版本的偏好,然后在移动网站上加载他们所在页面的相应桌面版本。这一切都很好&好,但我很快发现cookie计划不起作用。用户将自动重定向回移动站点。我发现这是因为“desktop.html”位于网站的根级别,所有其他页面都位于子目录中。所以我读到你可以通过附加“; path = /;”来使cookie成为全局的到饼干。我对我的所有页面都这样做了。然而,尽管我从浏览器中清空了我的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,请告诉我。*。

谢谢, 罗布

1 个答案:

答案 0 :(得分:0)

如果未设置值,则将该cookie设置为删除,这就是下一页上没有读取任何内容的原因。设置一个值就可以了。

document.cookie = 'desktop=true;...

Cookie详细解释了on quirksmode