我刚刚发现了一些令我困惑的事情:
<!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本身之间交替显示。
有人愿意详细说明吗?
答案 0 :(得分:2)
我在Chrome中尝试了这个实验并得到了相同的结果。我的猜测是在webkit实现中解析竞争条件。
当我修改代码以便不立即运行代码时,我可以获得一致的结果。
<script type="text/javascript">
setTimeout(function() { console.log(document.head) } , 0);
</script>
控制台会显示带有展开/折叠三角形的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>