2011-03-18 162 views
2

可能重复:
Why don't self-closing script tags work?加载脚本

为什么是它

<脚本类型= “文/ JavaScript的” SRC =“〜/脚本/ json2 .js“> </script >

<脚本类型= “文本/ JavaScript的” SRC = “〜/脚本/ json2.js”/ >

不同

似乎后一种形式不加载和,如果我用它正确工作的第一种方法替换它。

+0

查看具有96票以上的[这个问题](http://stackoverflow.com/questions/69913/why-dont-self-closing-script-tags-work)的答案。 – DOK 2011-03-18 17:51:12

+0

为什么你有〜在url路径 – fazo 2011-03-18 17:52:19

+0

道歉,我没有意识到这是一个重复。我投票结束了。 – 2011-03-18 17:55:48

回答

3

在XML中<foo></foo><foo/>的含义完全相同。所以在一个XHTML文档中(如果它被解释为XML),它们之间没有区别。

在SGML中,他们没有。

HTML历史上被设计为SGML应用程序(并且早于XML)。考虑到这一点,浏览器已经实现了它们的解析器(尽管它们不是完整的SGML解析器,并且一些有效的语法被错误地处理)。

当您向具有文本/ HTML Content-Type的浏览器提供文档时,它会将其解释为HTML。

因此<script/>被视为需要结束标记的元素的开始标记。

当写HTML兼容XHTML(即服为text/html即XHTML)的指导方针建议其被定义为EMPTY(并且因此结束标记是被禁止的)的元素被表示为<foo/>和所有其他元素被表示如<foo></foo>

由于<script>元素可以有内容(一个内联脚本),因此结束标记不是禁止的,所以需要显式结束标记。

0

可能因为不是一个单一的标签(我忘记了他们所称的),如BR或HR。脚本标签总是需要打开和关闭。