(原)JavaScript高级程序设计(第3版)--学习笔记--02: 在HTML中使用JavaScritp--0005--在XHTML中的用法
2.1.4 在XHTML中的用法
可扩展超文本标记语言,即 XHTML(Extensible HyperText Markup Language),是将 HTML 作为 XML 的应用而重新定义的一个标准。
编写 XHTML 代码的规则要比编写 HTML 严格得多,而且直接影响能否在嵌入 JavaScript 代码时使用 <script> 标签。
以下面代码为例,虽然他们在 HTML 中是有效的,但在 XHTML 中则是无效的。
<script type="text/javascript"> function compare(a, b) { if (a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"); } else { alert("A is equal to B"); } } </script>
这里比较语句 a < b 中的小于号(<)在 XHTML 中将被当作开始一个新标签来解析。但是作为标签来讲,小于号后面不能跟空格,因此会导致语法错误。
避免类似错误的方法有:两个。
方法一:用相应的 HTML 实体(<)替换代码中所有的小于号(<),替换后的代码类型如下所示:
<script type="text/javascript"> function compare(a, b) { if (a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"); } else { alert("A is equal to B"); } } </script>
虽然这样可以在 XHTML 中正常运行,但会导致代码不好理解。所以采用第二种方法。
方法二:用一个 CData 片段来包含 JavaScript 代码。 在 XHTML(XML)中,CData 片段是文档中的一个特殊区域,这个区域中可以包含不需要解析的任意格式的文本内容。因此,在 CData 片段中可以使用任意字符串,不会导致语法错误。
如下:
<script type="text/javascript"><![CDATA[ function compare(a, b) { if (a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"); } else { alert("A is equal to B"); } } ]]></script>
这个方法可以解决问题。
实际上,有不少浏览器不兼容 XHTML,因而不支持 CData 片段。
所以,使用 JavaScript 注释将 CData 标记注释掉,就可以。如下:
<script type="text/javascript"> //<![CDATA[ function compare(a, b) { if (a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"); } else { alert("A is equal to B"); } } //]]> </script>
这种格式在所有现代浏览器中都可以正常使用。
node:在将页面的 MIME 类型指定为"application/xhtml+xml"的情况下会触发 XHTML 模式。并不是所有浏览器都支持以这种方式提供 XHTML 文档。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步