javascript - console.log(document.head) 结果随每次刷新而交替

标签 javascript html google-chrome safari webkit

我刚刚发现了一些真正让我困惑的事情:

  <!DOCTYPE html>
  <html lang="en">
    <head>
      <title></title>
    </head>
    <body>
      <script type="text/javascript">
        console.log(document.head);
      </script>
    </body>
  </html>

每次我在 Safari 和 Chrome 中刷新此页面时,控制台输出都会在 JavaScript“HTMLHeadElement”和 HTML 本身之间交替。

有人愿意详细说明吗?

最佳答案

我在 Chrome 中尝试了这个实验,得到了相同的结果。我的猜测是 webkit 实现中存在某种解析竞争条件。

当我修改代码不立即运行代码时,我可以获得一致的结果。

<script type="text/javascript">
    setTimeout(function() { console.log(document.head) } , 0);
</script>

控制台将显示带有展开/折叠三 Angular 形的 HTML,因此可能作为一个对象。

<head>
    <title></title>
</head>

如果我添加 .outerHTML,我也会在那里获得一致的结果,将 HTML 记录为字符串。

<script type="text/javascript">
    console.log(document.head.outerHTML);
</script>

最后,添加 .toString() 将一致地记录 [object HTMLHeadElement]

<script type="text/javascript">
    console.log(document.head.toString());
</script>

关于javascript - console.log(document.head) 结果随每次刷新而交替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736679/

相关文章:

javascript - 如何使用JavaScript/Jquery在 anchor 中显示动态生成的代码

javascript - 在 Google Chrome 扩展程序中需要外部 JavaScript

javascript - 以编程方式切换到 Google Chrome 中的选项卡,如果找不到选项卡则打开 URL

javascript - 什么 perl 正则表达式可以正确匹配 javascript 关联数组?

javascript - 如何将整个 JSON 响应转换为值数组

javascript - 将键数组转换为键值对对象

javascript - TypeORM 和 Node JS 中的连接表

javascript - javascript中用逗号分隔元素

javascript - 页面加载时更改图像的 src

css - 按住鼠标左键时,Chrome 不会应用 css 悬停样式