我一直在尝试通过W3C在XHTML 1.0 Strict中验证我的网站代码。

我目前无法解决的最后一个错误:

"document type does not allow element "a" here"


这是因为我通过以下代码“隐藏”了机器人的电子邮件地址:

<td><script type="text/javascript">var name="contact";var domain="theriff.fr";document.write('<a href="mail'+'to:'+name+'@'+domain+'">&#x63;&#x6F;&#x6E;&#x74;&#x61;&#x63;&#x74;&#x40;&#x74;&#x68;&#x65;&#x72;&#x69;&#x66;&#x66;&#x2E;&#x66;&#x72;</a>');</script></td>


有谁知道我可以怎样保留电子邮件地址的“隐藏”状态,并且仍然请验证W3C中的最后一个错误?

提前致谢!

最佳答案

对于XML解析器,看起来您在<a>元素内有一个<script>元素(解析器不理解JavaScript)。

<script>元素内声明一个CDATA section

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


这告诉解析器不解析(即解释为XML)CDATA部分中的内容。如果浏览器将它们传递给JS引擎,则可能需要在分隔符之前使用//来防止JS引擎解释它们。

另请参阅:Properly Using CSS and JavaScript in XHTML Documents



旁注:You can't use document.write in XHTML documents:


  注意:document.write(如document.writeln)在XHTML文档中不起作用(在错误控制台上会出现“不支持操作”(NS_ERROR_DOM_NOT_SUPPORTED_ERR)错误)。如果打开带有.xhtml文件扩展名的本地文件或使用application / xhtml + xml MIME类型提供服务的任何文档,就属于这种情况。 W3C XHTML FAQ中提供了更多信息。

07-26 09:29
查看更多