关于jQuery代码的W3 xHTML验证错误!

时间:2011-02-02 15:17:51

标签: javascript jquery html validation w3c-validation

我有一些jQuery代码,如果没有它在文档中传递验证很好,但是它会导致错误。有问题的代码在这里:

    $.ajax({
        type: "GET",
        url: "data.xml",
        dataType: "xml",
        success: function(xml) {

            //Update error info
            errors = $(xml).find("Errors").find("*").filter(function ()
            {
                return $(this).children().length === 0;
            });

            if (errors.length == 0)
            {
                statuscontent = "<img src='/web/resources/graphics/accept.png' alt='' /> System OK";
            }
            else
            {
                statuscontent = "<img src='/web/resources/graphics/exclamation.png' alt='' /> "+errors.length+" System error"+(errors.length>1?"s":"");
            }

            $("#top-bar-systemstatus a").html(statuscontent);

            //Update timestamp
            $("#top-bar-timestamp").html($(xml).find("Timestamp").text());

            //Update storename
            $("#top-bar-storename").html("Store: "+$(xml).find("StoreName").text());
        }
    });

页面上有很多其他jQuery代码,这些代码都运行良好并且没有错误,因此我无法理解这有什么问题。页面不是“实时”,所以不幸的是无法提供链接。

它列出的错误是

  

文档类型不允许元素“img”在这里

它指向的代码行在这里:

 statuscontent = "<img src='/web/resources/graphics/accept.png' alt='' /> System OK";

statuscontent

的下一个作业也存在问题

2 个答案:

答案 0 :(得分:9)

这是因为您使用的是XHTML。这确实是无效的,因为验证器的行为就好像脚本标记之间的代码是XML(XHTML是XML的子集)。这是无效的XHTML,因为img - 标记不属于script - 标记。

要使其验证,请使用CDATA来转义脚本中的任何XML。

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

... your code
// ]]>
</script>

在HTML 5中,这不是问题。如果您创建一个新网站,我建议使用HTML 5而不是XHTML。仅在修改现有网站时才使用XHTML。

答案 1 :(得分:1)

请参阅“与HTML 5的差异”中的Script and Style Elements

接下来请看the comparable section in the XHTML Media Types document,因为您几乎可以肯定将XHTML作为HTML兼容性提供服务。

(那么你可能会做我在99年做过的事情,就是举起你的手,尖叫着“如果我不得不假装它是HTML,那么使用XHTML有什么意义?!”然后跑回来到HTML 4.01。(或者可能在HTML 5上))