zoukankan      html  css  js  c++  java
  • (原)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 实体(&lt;)替换代码中所有的小于号(<),替换后的代码类型如下所示:

    <script type="text/javascript">
        function compare(a, b) {
            if (a &lt; 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 文档。
  • 相关阅读:
    自定义全局样式
    ionic错误
    ionic 创建某个文件下的page
    获取高度
    页面加载完成
    css中有些属性的前面会加上“*”或“_(兼容IE浏览器)
    【Visual Studio】error C2220: 警告被视为错误
    H264格式(转)
    什么是信令?什么是信令网?(转)
    XMPP协议实现原理介绍(转)
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/9123201.html
Copyright © 2011-2022 走看看