浏览器问题与从javascript读取cookie有关

时间:2013-08-14 12:42:40

标签: javascript internet-explorer google-chrome firefox browser

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

  • Firefox中一切正常,即设置cookie并在6个月后过期。
  • 但是在IE中,cookie会设置,但会在浏览器会话中过期。
  • 对于Chrome Cookie,并非所有人都在阅读和设置它。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

Chrome output

这将是一个巨大的cookie。


除此之外,您所看到的错误与同源政策有关。除非外部域具有特殊设置,否则您无法从页面域外的域引用Javascript。 Google有一些具有该特殊设置的服务器,因此如果您不想在服务器上托管jquery文件,则可以使用以下URL:

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

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