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
。
我正在尝试用 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
。