<script>标签可以不自行关闭吗?

The*_*can 52 html xhtml html5

我在我的网站上有这个代码

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"/>
<script type='text/javascript' src='/lib/player/swfobject.js'></script>
Run Code Online (Sandbox Code Playgroud)

swfobject没有工作(没有加载).

将代码更改为:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type='text/javascript' src='/lib/player/swfobject.js'></script>
Run Code Online (Sandbox Code Playgroud)

它工作正常.

该文档被解析为HTML5.

我觉得这很有趣.好的,授予一个已关闭的标签和一个自动关闭的标签不一样.所以我会理解jQuery是否无法加载(虽然我觉得它很荒谬).

但我不明白的是,jQuery加载,但以下,正确编写的标签,不?

Ars*_*nko 55

在HTML中,有些标签总是自动关闭的.例如,<hr>Some content here</hr>没有任何意义.同样,有些标签不能自动关闭.<script>标签就是其中之一.

我不确定没有自闭<script>标签的原因,但原因可能来自标签旨在始终包含内部代码的事实.再说一遍,我不确定.

  • 这仍然困扰着我. (63认同)
  • 15个字符的是的.同样在这里. (9认同)

Que*_*tin 25

因为它被解析为:

第1行:脚本的开始标记

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"/>
Run Code Online (Sandbox Code Playgroud)

第2行:如果第1行提到的外部脚本无法加载,则执行JavaScript(真正破解JavaScript!)

    <script type='text/javascript' src='/lib/player/swfobject.js'>
Run Code Online (Sandbox Code Playgroud)

第3行:脚本的结束标记在第1行开始

</script>
Run Code Online (Sandbox Code Playgroud)

好的,授予一个已关闭的标签和一个自闭标签不一样.

它们是相同的(如果没有内容),但只在XML文档中.作为application/xhtml + xml的XHTML文档是XML文档.在HTML文档中,由于浏览器不正确实现的遗留问题,自动关闭标记只是一个开始标记(因此只有在禁止结束标记时才可以).


Chu*_*uck 21

David Dorward的回答从一个角度解释了这个问题,但是有一个更深层次的原因导致你无法做到这一点:

标记末尾的斜杠不会使其在HTML中自动关闭

自闭语法是XML的一部分.在普通的HTML文档中,它没有任何意义.

  • @Tom:更准确地说,没有理由*在HTML中使用它们."永远不应该使用"意味着它是有问题的 - 事实上,它只是多余的,因为BR元素总是在HTML中自动关闭. (7认同)
  • @Chuck,迟到的评论但是,实际上有一个很好的理由让你的html文档也是有效的XML文档.即使浏览器不关心正确关闭的标签,使文档有效的XML允许您更容易地解析和转换它(即使用XSLT). (3认同)
  • 所以像`<br />`之类的东西永远不应该用在HTML中? (2认同)