W3 xHTML Ошибки валидации в коде jQuery! - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть некоторый код 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 ]

9 голосов
/ 02 февраля 2011

Это потому, что вы используете XHTML. Это действительно недопустимо, так как валидатор действует так, как будто код между тегами скрипта является XML (XHTML является подмножеством XML). Это недопустимый XHTML-теги img не принадлежат тегам script.

Чтобы проверить его, используйте CDATA для экранирования любого XML в вашем скрипте.

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

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

В HTML 5 это не проблема. Если вы создаете новый веб-сайт, я бы порекомендовал HTML 5 поверх XHTML. Используйте XHTML, только если вы изменяете существующий веб-сайт.

1 голос
/ 02 февраля 2011

См. Элементы сценариев и стилей в отличиях от HTML 5.

Далее смотрите сопоставимый раздел в документе XHTML Media Types , поскольку вы почти наверняка используете свой XHTML в качестве HTML для совместимости с IE.

(Тогда вы, вероятно, сделаете то, что я сделал в 99-м, то есть поднял руки вверх, закричал «Какой смысл использовать XHTML, если мне нужно притвориться, что это HTML ?!» и вернуться в HTML 4.01. (или, возможно, в HTML 5))

...