在符合W3C规则的情况下在JavaScript字符串中使用HTML标记

Pie*_*ter 2 html javascript w3c w3c-validation

这是我的代码:

<a href="#">
    <img src="myimage.jpg" 
     onmouseover="showDescription(
          'Text', 'Text with HTML tags in them<br />More text');" 
     onmouseout="revertDescription();" 
     alt="Image description">
Run Code Online (Sandbox Code Playgroud)

W3C标记验证器不喜欢这个.它不希望我的JavaScript代码中包含HTML标记.以下是我尝试此操作时产生的错误消息:

字符"<"是分隔符的第一个字符,但作为数据出现

如果我将包含HTML标签的字符串传递给document.getElementById('myElement').innerHTML?确保我的页面不会搞乱,我该如何解决这个问题呢?

mik*_*iku 5

您可以将函数包装<script>...</script>在文档中其他位置的单独标记内,并使用...

<script>
//<![CDATA[
    ...code...
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)

来自http://javascript.about.com/library/blxhtml.htm:

要解决这个问题,可以做两件事之一.最简单的方法,特别是如果Javascript包含的不仅仅是一行或两行,就是使页面外部的Javascript导致它们在脚本标记之间无效,以阻止页面验证.

如果它只是一行或两行,则可能不值得制作外部脚本,因此您需要将内容保留在脚本标记之间,并告诉验证者这将被忽略.我们通过将Javascript代码放在像这样的CDATA标签中来实现这一点......


ric*_*cky 5

有很多方法可以到达那里。

  1. 使用&#60;&lt;代替<
    使用&#62;&gt;代替>
  2. 获取图像的id,例如“image1”,然后 document.getElementById("image1").onmouseover = showDescription(
    'Text', 'Text with HTML tags in them<br />More text');

希望这有效。