Javascript:如何修复由 & 引起的 W3 验证错误

发布于 2024-08-05 17:46:07 字数 138 浏览 3 评论 0原文

有什么方法可以修复 JavaScript & 的错误吗? w3 验证中的原因?问题是我必须使用 &&在 if 语句中,这两个 && 会导致 w3 验证出错。

编辑: 与“<”同样的问题和“>”。

Is there any way to fix the error that a JavaScript & causes in w3 validation? The problem is that i have to use && in a if statement and these two &&'s causes errors in w3 validation.

EDIT:
Same problem with "<" and ">".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

巷雨优美回忆 2024-08-12 17:46:07

您可以做一些事情。

您可以将其包含在 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>

There are a few things you can do.

You can enclose it within HTML comments:

<script type="text/javascript">
<!--

if (foo && bar) ...

//-->
</script>

You can enclose it in a CDATA section:

<script type="text/javascript">
// <![CDATA[

if (foo && bar) ...

// ]]>
</script>

You can include in in a file instead:

<script src="foobar.js" type="text/javascript"></script>
凉世弥音 2024-08-12 17:46:07

主要答案是:JavaScript 使用 JavaScript 文件,而不是 HTML 文件,并使用 script 标签的 src 属性。 (将所有 JS 合并到一个文件中,最小化、gzip 等以提高性能。)

但是,如果绝对必要,您可以将 JavaScript 嵌入到 HTML 中。使用有效的、现代的 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>

但同样,基本答案是:当可以避免时,不要在 HTML 文件中嵌入 JavaScript,而应使用 JavaScript 文件。

The primary answer is: Use JavaScript files for JavaScript, not HTML files, and use the src attribute of script tags. (Combine all your JS into one file, minimize, gzip, etc. for performance.)

But, you can embed JavaScript in HTML if absolutely necessary. Use a valid, modern DOCTYPE and you don't have to resort to comment tags and CDATA sections.

Valid HTML5 example:

<!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>

That will also validate as HTML4 strict if you change the doctype to

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Note that in both cases, you need to be careful about end tags in your script --

This causes the problem:

<script type='text/javascript'>
alert("</td>");
</script>

This solves the problem by prefacing the slash with a backslash (or you can break the end tag up into separate string literals):

<script type='text/javascript'>
alert("<\/td>");
// -or-
alert("<" + "/td>");
</script>

But again, the basic answer is: Don't embed JavaScript within HTML files when you can avoid it, use JavaScript files for that.

时光清浅 2024-08-12 17:46:07

根据您的描述,我怀疑您正在谈论 HTML 标记中事件属性内的脚本(例如 onclick)。在这种情况下,脚本代码需要进行 HTML 编码。以利亚一语中的。

例如:

<input type="submit" onclick="if(somevar && othervar) callFunc("clicked");">

您不需要在 块内执行此操作。

Based on your description, I suspect that you're talking about script that's inside an event property in an HTML tag (such as onclick). In that event, the script code needs to be HTML encoded. Elijah hit the nail on the head there.

For example:

<input type="submit" onclick="if(somevar && othervar) callFunc("clicked");">

You do not need to do that inside a <script></script> block.

上课铃就是安魂曲 2024-08-12 17:46:07

使用 & 转义 &,使用 < 转义 <,以及 > ;>

Escape & with &, < with <, and > with >.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文