2

假设我有一段带有内联 javascript 的 html,如下所示:

<div id="myDiv">
</div>

<script type="text/javascript">
    var myElement = document.getElementById("myDiv");
    if(!myElement)
        throw "Invalid";
<script>

<div /> ...and so on

所以我有一个被 div 标签包围的脚本标签,并且脚本在它之前声明的 div 上运行。

这是浏览器安全/HTML 标准的做事方式吗?

4

3 回答 3

4

这是浏览器安全/HTML 标准的做事方式吗?

很安全,是的。它甚至被 Google Closure 库工程师提倡

更标准的方法是将所有脚本放在页面的最底部,就在结束</body>标记之前,正如YUI 人所提倡的那样

在它们作用的元素之后立即将它们放入会导致大量小script标签散布在您的内容标记中,这并不理想(特别是在标记/内容团队和脚本团队可能完全分开的大型团队中)。

相反,将所有脚本放在最底部会导致潜在的可能性,即可以在页面上放置用户可以单击的内容(例如),您打算在代码中处理该点击,但用户设法到达那里在代码连接点击事件处理程序之前。这是一个很小的机会之窗,但它就在那里。为了解决这个问题,你有几个选择来减轻它:

  1. 渐进式增强,即使脚本没有钩住它,点击也会做一些有用的事情,或者

  2. 页面顶部的一个小内联脚本(不是一个单独的文件)连接相关事件document.body(假设它是一个冒泡事件),该小脚本要么将点击排队,然后在主代码到达时分发它们,或者(这不是很好)显示“只是一秒钟,我们仍在加载”之类的消息。

您不做过去将脚本放入并依赖“就绪”样式事件的标准做法是完全正确head。如果您控制脚本的去向,则无需这样做。

于 2013-05-16T09:45:09.267 回答
3

通常,如果您依赖文档中的元素,您将在页面底部(就在 之前</body>)包含所有脚本。这具有不阻塞页面呈现的额外好处。

在此处阅读更多相关信息。

于 2013-05-16T09:44:44.600 回答
1

最好在文档末尾插入脚本

于 2013-05-16T09:46:16.283 回答