有什么方法可以修复 JavaScript & 在 w3 验证中导致的错误?问题是我必须在 if 语句中使用 &&,而这两个 && 会导致 w3 验证出错。
编辑:“<”和“>”有同样的问题。
有什么方法可以修复 JavaScript & 在 w3 验证中导致的错误?问题是我必须在 if 语句中使用 &&,而这两个 && 会导致 w3 验证出错。
编辑:“<”和“>”有同样的问题。
您可以做几件事。
您可以将其包含在 HTML 注释中:
<script type="text/javascript">
<!--
if (foo && bar) ...
//-->
</script>
您可以将其包含在 CDATA 部分中:
<script type="text/javascript">
// <![CDATA[
if (foo && bar) ...
// ]]>
</script>
您可以改为包含在文件中:
<script src="foobar.js" type="text/javascript"></script>
主要答案是:对 JavaScript 使用 JavaScript 文件,而不是 HTML 文件,并使用src
脚本标签的属性。(将所有 JS 合并到一个文件中,最小化、gzip 等以提高性能。)
但是,如果绝对必要,您可以在 HTML 中嵌入 JavaScript。使用有效的现代 DOCTYPE,您不必求助于注释标签和 CDATA 部分。
有效的 HTML5 示例:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Example</title>
<script type='text/javascript'>
function foo() {
var a = 1, b = 2;
if (a && b) {
alert("Both");
}
if (a < b) {
alert("a < b");
}
if (a > b) {
alert("a > b");
}
}
</script>
</head>
<body>
<p>Hi there</p>
</body>
</html>
如果您将 doctype 更改为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
请注意,在这两种情况下,您都需要注意脚本中的结束标记——
这会导致问题:
<script type='text/javascript'>
alert("</td>");
</script>
这通过在斜杠前面加上反斜杠来解决问题(或者您可以将结束标记分解为单独的字符串文字):
<script type='text/javascript'>
alert("<\/td>");
// -or-
alert("<" + "/td>");
</script>
但同样,基本答案是:不要在 HTML 文件中嵌入 JavaScript,如果可以避免,请使用 JavaScript 文件。
根据您的描述,我怀疑您说的是 HTML 标记中的事件属性内的脚本(例如 onclick)。在这种情况下,脚本代码需要进行 HTML 编码。以利亚在那儿一针见血。
例如:
<input type="submit" onclick="if(somevar && othervar) callFunc("clicked");">
您不需要在<script></script>
块内执行此操作。
&
用&
、<
和逃逸。<
_ >
_>