document.head,document.body附加脚本

gra*_*ine 28 javascript dom

我经常使用并看到推荐的dom-access结构,用于动态地向页面添加内容:

loader = document.createElement('script');
loader.src = "myurl.js";
document.getElementsByTagName('head')[0].appendChild(loader);
Run Code Online (Sandbox Code Playgroud)

现在,我偶然发现这适用于Google Chrome:

document.head.appendChild(loader);
Run Code Online (Sandbox Code Playgroud)

多一点调查,我发现这很有效,显然是跨浏览器:

document.body.appendChild(loader);
Run Code Online (Sandbox Code Playgroud)

所以我的主要问题是:有没有任何理由我不应该像这样将元素附加到BODY?

另外,您认为document.head会得到更广泛的支持吗?

Dan*_*man 14

在实践中,无论是将<script>元素插入元素<head>还是<body>元素,我都看不出任何理由.从理论上讲,我认为让运行时DOM类似于可能的静态DOM是很好的.

至于document.head它,它是HTML5的一部分,显然已经在所有主流浏览器的最新版本中实现(参见http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-document - 头).


Nik*_*iko 8

document.body是DOM规范的一部分,我没有看到为什么不使用它.但要注意这一点:

在包含内容的文档中,返回元素,在框架集文档中,这将返回最外层的元素.

(来自https://developer.mozilla.org/en/DOM/document.body)

document.head 目前没有在任何DOM规范中定义(显然我错了,请参阅Daniel的回答),所以通常应该避免使用它.