0

我正在使用以下代码:

<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。有什么想法为什么不呢?

4

2 回答 2

1

查看您的代码时,很可能是在 DOM 完全加载后执行此代码段。加载 dom 会隐式关闭文档,而document.write需要打开文档。如果不是以下三种情况之一:

  • 最好的情况:什么也没发生,什么也没写
  • 更糟糕的是:创建了一个新页面
  • 最糟糕,也是最常见的:现有文档被覆盖

检查这个问题,为什么document.write:不被使用为什么 document.write 被认为是“不好的做法”?

正如已接受的链接问题的分析器还提到(并且因为这也为 OP 修复了问题)调用document.writeXHTML dom 根本不起作用。现在可能 FF/Chrome/Chromium/Safari/Opera 都默认将 DOM 渲染为 HTML5。IE9 可能会选择 XHTML 过渡或其他东西......显式设置 doctype 似乎是操作的修复,所以我猜<!DOCTYPE html>是什么诀窍

于 2013-04-05T09:14:58.843 回答
0

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

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

于 2013-04-05T09:28:22.077 回答