【问题标题】:Where can I put a script tag? [closed]我可以在哪里放置脚本标签? [关闭]
【发布时间】:2013-11-27 22:10:39
【问题描述】:

在html中放置<script>标签在哪里合法?

我有正当理由(我发誓!)在我的部分页面中使用 document.write。这意味着我需要放

<script>document.write('some goodness')</script>

在 DOM 中的某个任意点。是否始终支持?

【问题讨论】:

标签: javascript html


【解决方案1】:

In HTML5 the &lt;script&gt; element is defined as being allowed in the following places:

可以使用该元素的上下文:

  • 需要元数据内容的地方。
  • 需要短语内容的地方。
  • 需要支持脚本的元素。

大多数内容元素允许phrasing content&lt;head&gt; 元素允许metadata content

一些元素支持&lt;script&gt;元素作为直接后代,需要注意的是这个列表可能会发生变化,所以请查阅规范,因为这可能不是一个完整的列表:

  • &lt;html&gt;
  • &lt;title&gt;
  • &lt;script&gt;

此外,您不应该将&lt;script&gt; 元素放在&lt;noscript&gt; 元素中,因为这样做根本没有任何意义,即使它在技术上会得到规范的支持。

【讨论】:

  • 我喜欢这个答案。但根据我的经验,将&lt;script&gt; 标签作为&lt;html&gt; 元素的直接子元素确实 有效。我猜这只是由于浏览器的怪癖?
  • 答案引用了一个可变的工作草案而不说它。它仅适用于 HTML 的一个开发中版本。例如&lt;html&gt; 肯定“支持”&lt;script&gt; 元素——它只是不允许它作为一个孩子。
  • @JukkaK.Korpela,我永远无法保持 HTML5 规范链接直截了当,is this a better reference,或者你有不同的 HTML5 规范?
【解决方案2】:

您可以在 &lt;head&gt;&lt;body&gt; 标记之间的任何位置添加它们:

  • 如果插入头部,会在页面渲染之前加载,
  • 如果你把它放在 body 上,它会在所有页面被加载后加载 渲染,因此用户不会等待您的脚本被解析 页面呈现 = 更快的页面呈现

例外:

  • &lt;title&gt; 标签内(如你所说)
  • &lt;tr&gt; (see this link) 中 显然是这样(见后文)

我在fiddle上尝试了一些元素,你可以试试

【讨论】:

  • 显然它在 &lt;title&gt; 标记中不起作用,所以它在任何地方都是合法的。
  • @chowey 感谢您的提示,我从未尝试过!
猜你喜欢
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
相关资源
最近更新 更多