为什么<script> </script>而不是HTML5中的<script>?</script>

时间:2013-08-15 09:54:55

标签: javascript html5 xhtml

为什么以下行在许多浏览器中都不起作用(mozilla,IE)?

<script src="jQuery.js" />

为什么我们必须这样设置?

<script src="jQuery.js"></script>

这些天我将我的项目从XHTML转换为HTML5,并且我面临一些轻微但令人不安的不可能性。

2 个答案:

答案 0 :(得分:4)

虽然脚本元素可以通过src属性从外部URL加载内容,但它也可以使代码内联(作为子节点)。这意味着它不是EMPTY元素,因此不能要求省略结束标记。

在HTML 5中,开始标记末尾的/并不意味着“这是一个自我结束标记”,对于编写过多XML或使用XML语法的人来说,它只是语法糖。荧光笔。

即使您仍在编写XHTML,您也可能无法使用<script />语法,因为它不是HTML compatible

答案 1 :(得分:0)

HTML要求使用<script>关闭</script> 。在HTML中,<script />始终表示具有属性<script>的开放/标记;忽略未知属性名称。在HTML模式下,实体不会在嵌入式脚本中进行解析,并且脚本会在</script字符串最早出现时结束,有时在</结束,具体取决于浏览器。

这些规则的唯一例外是在XML模式下解析的XHTML - 有自我关闭的脚本标签可以工作;但是因为这在所有浏览器中都没有用过(即XHTML),并且用Content-Type: text/html提供的XHTML意味着它应该使用HTML规则进行解析,所以即使在“XHTML”中也不应该使用它。

澄清一下,Serving HTML & XHTML说明如下:

  

将XHTML标记发送到具有MIME类型的浏览器   是XML,您需要使用以下MIME类型之一:   application / xhtml + xml,application / xml或text / xml。 W3C建议   您仅使用第一种MIME类型将XHTML作为XML提供 -   即。应用/ XHTML + xml的。

     

当浏览器读取XML时,它使用XML解析器,而不是HTML解析器。

     

不幸的是,包括版本8,Internet Explorer在内   不支持作为XML的文件,尽管其他一些文件   浏览器。要解决并非所有浏览器都支持的事实   作为XML的内容,许多XHTML文件实际上是使用   text / html MIME类型。在这种情况下,用户代理将读取该文件   好像它是HTML,并使用HTML解析器。

     

由于浏览器认为XML实际上是HTML,因此您需要   考虑到两种格式之间的一些差异   编写您的XHTML代码,以确保XML之间的差异   和HTML语法不会使浏览器绊倒。这包括不同的   声明字符编码或语言声明的方法   在文件里面。

因此,为了解决浏览器的差异,如果希望使用HTML解析器处理文件,则必须显式关闭脚本标记。如果使用text/html内容类型,这是许多人的期望。