有没有办法解决JavaScript和& w3验证的原因?问题是我必须使用&&在if语句中,这两个&&'s会导致w3验证错误。
编辑: 与“<”相同的问题和“>”。
答案 0 :(得分:18)
你可以做一些事情。
您可以将其括在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>
答案 1 :(得分:3)
主要答案是:将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更改为
,那么也将验证HTML4严格<!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>
但同样,基本的答案是:当你可以避免使用JavaScript时,不要在HTML文件中嵌入JavaScript,使用JavaScript文件。
答案 2 :(得分:0)
根据您的描述,我怀疑您正在讨论HTML标记中的事件属性(例如onclick)中的脚本。在那种情况下,脚本代码需要进行HTML编码。以利亚在那里击中了钉子。
例如:
<input type="submit" onclick="if(somevar && othervar) callFunc("clicked");">
您无需在<script></script>
区块中执行此操作。
答案 3 :(得分:-1)
&
与&
,<
与<
,>
与>
一起逃脱。