JavaScript 无法在 XHTML 中工作

JavaScript not working in XHTML

我正在尝试用 JavaScript 创建一个 XHTML 页面。 JavaScript 无效。

我写了最简单的文件,但是找不到错误。对我来说似乎很好。请给我一些建议。

    <!DOCTYPE html>
    <html   version="-//W3C//DTD XHTML 1.1//EN"
            xmlns="http://www.w3.org/1999/xhtml"
            xml:lang="en"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.w3.org/1999/xhtml
                                http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
    <head>
        <title>XHTML Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta charset="utf-8" />
        <meta name="description" content="XHTML Test" />
        <meta name="keywords" content="XHTML, Test" />
        <link rel="stylesheet" type="text/css" href="a.css" />
        <script type="application/javascript" charset="utf-8" src="a.js" defer="defer"></script>
        <script type="application/javascript">
            function init()
            {
                alert('x');
            }
        </script>
    </head>
    <body onLoad="init();">
    <div id="main" class="c1">
        XHTML Test.
    </div>
    </body>
    </html>

我试过在 <script> 中使用外部 JS 文件和内联脚本。两者都不适合我。

文档保存为 index.xhtml 并由 Apache 按原样提供: Content-Type: "application/xhtml+xml"

如果我将文件重命名为 index.html,它将作为 HTML 使用,并且脚本可以运行。我需要它是 XHTML。

谢谢。

在 xhtml 中你需要使用 CDATA 告诉浏览器你的脚本只是文本而不是 xml

<script type="application/javascript">
//<![CDATA[
    function init()
    {
        alert('x');
    }
//]]>
</script>

编辑:

尝试:<body onload="init();">

基于:https://www.w3.org/TR/xhtml1/#h-4.11

4.11。具有预定义值集的属性

HTML 4 和 XHTML 都有一些具有预定义和有限值集的属性(例如输入元素的类型属性)。在 SGML 和 XML 中,这些称为枚举属性。在 HTML 4 下,这些值的解释不区分大小写,因此 TEXT 的值等同于文本的值。在 XML 下,这些值的解释是区分大小写的,而 在 XHTML 1 中,所有这些值都以小写形式定义。

XHTML 具有区分大小写的标记和属性名称。必须全部小写。

您写的是 onLoad 而不是 onload