HTML 中的空脚本标签是怎么回事
What's the thing with empty script tags in HTML?
要在HTML页面中包含外部JavaScript文件,您可以使用以下内容:
<script type="text/javascript" src="images/jquery-2.2.2.js"></script>
此标签的主体为空,但我必须键入字符串script
两次。为什么 HTML 中没有 XML 样式的隐式结束标记,如下所示:
<script type="text/javascript" src="images/jquery-2.2.2.js" />
如果它是有效的(至少在HTML5中),那么如何确保每个支持HTML5(或XHTML5)的浏览器都可以接受这种用法?
编辑
我将把这个问题带到HTML WG。弃用<script>
上的 src
属性,因为它是整个混淆的根源,具有以下两个选项之一:
<link>
标记而不是空<script>
标记:<link type="text/javascript" href="images/jquery-2.2.2.js" />
或者可以选择使用
rel
属性:<link rel="script" type="text/javascript" href="images/jquery-2.2.2.js" />
JavaScript 本身的 PHP 样式
include()
:(因此始终强制将某些内容放入标签中,并允许在一个script
标签中包含多个脚本)<script type="text/javascript">include("images/jquery-2.2.2.js");</script>
不能省略脚本元素的结束标记。如果这样做,JavaScript 运行时将看到以下 HTML 作为 JavaScript 并出错。
您唯一可以自行终止元素标签 ( <br />
) 的情况是 如果该元素没有结束标签(br, link, meta) 或结束标签被定义为可选 (li, p)。
现在,您必须使用打开和结束标记键入元素的原因是该元素可以包含 JavaScript,这使它成为内容元素。所有内容元素必须始终显式关闭,除非规范另有说明。
实际上,尾随正斜杠"/"被 HTML 忽略 解析 器。包含它的唯一好处是如果标记是 由 XML 解析器解析。
因此,对于 HTML 解析器,它将看到以下内容:
<script type="text/javascript" src="images/jquery-2.2.2.js" />
如:
<script type="text/javascript" src="images/jquery-2.2.2.js">
然后,它会认为接下来的所有内容都必须是JavaScript。
根据规范,在 HTML5 中省略 <script>
的结束标记是不允许的(请参阅标记省略部分):
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
https://www.w3.org/TR/html5/scripting-1.html#script
https://html.spec.whatwg.org/multipage/scripting.html#the-script-element
- Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
- 基本的HTML Javascript程序.这是怎么回事
- 每次运行此代码时,我都会得到不同的结果,这是怎么回事
- jQuery extend 函数是怎么回事
- “Bada” - 这个JavaScript片段是怎么回事
- 如何使文本字段为空?这是怎么回事
- 自定义SVG签名在CODEPEN上有效,但在本地机器上无效-这是怎么回事
- 事件侦听器不会在IE中被调用 - 这是怎么回事
- HTML 中的空脚本标签是怎么回事
- 这个JavaScript片段是怎么回事
- 调用堆栈超出,甚至没有任何递归.这是怎么回事
- 带有奇怪输出的单行 - 字符串作为“这个”是怎么回事
- 这个速记运算符是怎么回事
- 网站似乎在没有向服务器发送密码的情况下登录用户;这是怎么回事
- 将多个值分配给一个变量.这是怎么回事
- 图片库的图片预装器?这是怎么回事
- 这个CSS渲染阻塞是怎么回事
- Javascript中的回调真的是方法调用吗?如果是的话,他们是怎么回事'级联'
- 有人能解释一下这部分是怎么回事吗
- 私有JS函数,这是怎么回事