无法在IE9中设置cookie

时间:2013-04-05 08:59:45

标签: javascript cookies

我正在使用以下代码:

<script>
    var time = new Date();

    time.setFullYear(time.getFullYear() + 1, time.getMonth(), time.getDay());

    expires = ";expires=" + time.toGMTString();

    document.write(expires);

    document.cookie = "aardvark=cats; expires= " + time +"; path=/";

    document.write('\ndone: ' + document.cookie);
</script>

我已将其放入html文件并在本地运行,并尝试在JSFiddle上运行它,并尝试将其上传到我的网站并在我的浏览器中访问它。

在Internet Explorer 9中,我的计算机上没有创建cookie。任何想法为什么不呢?

2 个答案:

答案 0 :(得分:1)

在查看代码时,很可能在DOM完全加载后执行此代码段。加载dom会隐式关闭文档,而document.write需要打开文档。如果不是三件事中的一件事可能发生:

  • 最好的情况:没有任何反应,没有写任何内容
  • 更糟糕:创建了新页面
  • 最糟糕,最遗憾的是:现有文件被覆盖

检查此问题,了解document.write:不使用Why is document.write considered a "bad practice"?

的原因

由于已经提到的链接问题的解决方案也提到(并且因为OP也固定了这一点)在XHTML dom上调用document.write根本不起作用。现在默认情况下FF / Chrome / Chromium / Safari / Opera都可以将DOM渲染为HTML5。 IE9可能会选择XHTML过渡或者某种东西......显式设置一个doctype似乎是op的修复,所以我猜<!DOCTYPE html>是什么诀窍

答案 1 :(得分:0)

我现在修好了。需要设置DOCTYPE。

我认为Cookie永远存在,并且可以使用默认的DOCTYPE,但事实并非如此。