0

在设置 cookie 时,我面临不同浏览器的问题,并且从 java 脚本中获取相同的信息。

  • 在 Firefox 中一切正常,即设置 cookie 并在 6 个月后过期。
  • 但是在 IE cookie 中确实设置了但随着浏览器会话过期。
  • 对于 Chrome 的 cookie 并不是全部读取和设置。

我已经尝试了很多实验,但我无法得到我预期的解决方案。我究竟做错了什么?

4

1 回答 1

1

我认为这部分看起来不正确:

// Store the cookie
Cookie.prototype.store = function () {
    var cookieval = "";
    for(var prop in this) {
        // ...
        cookieval += prop + ':' + escape(this[prop]);
    };
    // ...
};

基本上,这会遍历每个全局 Javascript 变量(与 cookie 无关)并将它们添加到 cookie 值中。这真的是你想要的吗?当我在 Chrome 中运行以下命令时,请查看输出:

铬输出

这将是一个巨大的饼干。


除此之外,您看到的错误看起来像是同源策略的问题。除非外部域具有特殊设置,否则您不能从页面域之外的域引用 Javascript。谷歌有一些特殊设置的服务器,所以如果你不想在你的服务器上托管 jquery 文件,你可以使用这个 URL:

https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js

不过,老实说,您似乎有很多问题需要处理(跨域问题、未定义的 jQuery、跨浏览器兼容性)。您可能应该尝试简化您的代码,看看它是否适用于简单的情况。与其将所有 Javascript 变量存储在 cookie 中,不如看看您是否可以只在 cookie 中存储一个简单的字符串值,并查看您的代码是否与跨浏览器兼容。如果可行,请尝试添加过期时间,然后添加域/路径等。这样您就可以一次专注于一个问题。

于 2013-08-14T14:29:12.487 回答