Javascript 什么';HTML中的空脚本标记是什么?
要在HTML页面中包含外部JavaScript文件,请使用以下命令:Javascript 什么';HTML中的空脚本标记是什么?,javascript,html,Javascript,Html,要在HTML页面中包含外部JavaScript文件,请使用以下命令: <script type="text/javascript" src="images/jquery-2.2.2.js"></script> 如果它是有效的(至少在HTML5中是有效的),那么如何确保每个支持HTML5(或XHTML5)的浏览器都能了解这种用法 编辑 我将把这个问题带到HTML工作组。不推荐使用上的src属性,因为它是整个混乱的根源,使用以下两个选项之一: 标记而不是空的标记: <
<script type="text/javascript" src="images/jquery-2.2.2.js"></script>
如果它是有效的(至少在HTML5中是有效的),那么如何确保每个支持HTML5(或XHTML5)的浏览器都能了解这种用法
编辑
我将把这个问题带到HTML工作组。不推荐使用
上的src
属性,因为它是整个混乱的根源,使用以下两个选项之一:
标记而不是空的
标记:<link type="text/javascript" href="images/jquery-2.2.2.js" />
- JavaScript本身中的PHP风格
(因此在任何时候都将一些内容强制放入标记中,并允许在一个include()
标记中包含多个脚本)script
include(“images/jquery-2.2.2.js”);
)的唯一时间是,如果该元素没有结束标记(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中省略
的结束标记是不允许的(请参见标记省略部分):
有趣的是,在firefox 2.0左右的版本中,这实际上是可行的,但它被关闭了,以使XSS更难,并允许更多的清理regexp正常工作。我记得变更日志条目…粗略的tl;AFAIK博士:HTML5的一个最初目标是标准化能够跨浏览器最可靠地工作的内容。这在某些浏览器中从未实现过,因此出于可比性原因,它被排除在HTML5之外。这导致在HTML模式下实现它的浏览器决定删除它。@JeremyBanks:更简单的是:没有任何可以包含内容的标记可以通过
/>
自动关闭。我发现这变得非常愚蠢,速度非常快。src
属性和script标记的内容在现实生活中基本上是互斥的,因此允许
自关闭并不是一个坏主意,因为它们几乎完全用于链接外部脚本。@MaxthonChan我不反对。但是,HTML中有很多“特性”没有多大意义。但是,这正是XML(和XHTML)应该解决的问题,直到世界决定它不希望XML成为未来。另一个解决方案可能会派上用场的地方是
标记。类似于
的内容可能会非常有用,可以从
标记中删除src
属性。@maxthonch对此有更多的了解。HTML被设计为IBM在60年代设计的SGML(标准通用标记语言)的词汇和语法。当Tim Berners Lee创建HTML时,他使用SGML来指定HTML语言的“规则”。SGML要求元素有内容、没有内容或者可以选择自终止。因为
可以包含内容,所以它被声明为包含内容,因此需要一个结束标记。@MaxthonChan是另一个好建议,但请再次记住,HTML、CSS和JavaScript并不是同时发明和实现的,所以我们今天拥有的很多都是已经成为标准的补丁。Netscape发明了JavaScript,因此他们不得不发明一种将其注入代码的方法,因此他们提出了
(
无法做到这一点)。最终,它进入了标准。
<script type="text/javascript">include("images/jquery-2.2.2.js");</script>
<script type="text/javascript" src="images/jquery-2.2.2.js" />
<script type="text/javascript" src="images/jquery-2.2.2.js">