为什么以下行在许多浏览器中都不起作用(mozilla,IE)?
<script src="jQuery.js" />
为什么我们必须这样设置?
<script src="jQuery.js"></script>
这些天我将我的项目从XHTML转换为HTML5,并且我面临一些轻微但令人不安的不可能性。
答案 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
内容类型,这是许多人的期望。