почему это не подтвердится (проблема jquery)? - PullRequest
3 голосов
/ 19 мая 2009

На моем сайте я использую плагин цикла jquery для слайд-шоу с пейджером. Этот пример: http://malsup.com/jquery/cycle/pager.html

Итак, в заголовке моего документа есть сценарий, похожий на:

<script type="text/javascript">
$('#s4').before('<div id="nav">').cycle({ 
    fx:     'turnDown', 
    speed:  'fast', 
    timeout: 3000, 
    pager:  '#nav' 
});
</script>

Мой тип документа - XHTML Strict.

Когда я пытаюсь проверить страницу, я получаю следующие ошибки: "тип документа не допускает элемента" div "здесь" а также «конечный тег для« div »опущен, но OMITTAG NO был указан», потому что тег div не закрыт.

Есть ли способ использовать jquery и заставить его проверить?

Ответы [ 3 ]

8 голосов
/ 19 мая 2009

Если вы поместите теги комментариев HTML в свой блок скрипта, валидатор проигнорирует этот блок кода и подтвердит правильность.

<script type="text/javascript">
<!--
$('#s4').before('<div id="nav">').cycle({ 
    fx:     'turnDown', 
    speed:  'fast', 
    timeout: 3000, 
    pager:  '#nav' 
});
//-->
</script>
8 голосов
/ 20 мая 2009

На самом деле причина, по которой ваш код не проверяется, заключается в том, что определенные символы не допускаются в XHTML (например, "<" и т. Д.), Поэтому они должны быть заключены в CDATA разделы в XHTML ( на строгий характер XML правил разбора). HTML маркеры комментариев (в частности, двойные черты "--") также недопустимы и не должны появляться в блоке SCRIPT, поскольку они не действительный понятный JavaScript. Поэтому вместо использования HTML маркеров комментариев вы должны заключить код в «раздел, отмеченный CDATA», чтобы пройти валидатор и не перепутать механизмы JavaScript:

<script type="text/javascript">
//<![CDATA[
$('#s4').before('<div id="nav">').cycle({ 
    fx:     'turnDown', 
    speed:  'fast', 
    timeout: 3000, 
    pager:  '#nav' 
});
//]]>
</script>

Для получения дополнительной информации посмотрите следующие страницы:

  1. Рекомендация XHTML 1.0: 4.8. Элементы скрипта и стиля
  2. Правильное использование CSS и JavaScript в документах XHTML
1 голос
/ 19 мая 2009

Вероятно, вы могли бы избавиться от ошибок, выполнив:

$('#s4').before('<' + 'div id="nav">').cycle({ ...

Это должно помешать валидатору обнаруживать любой HTML-код внутри тега скрипта. Я - я бы жил с ошибкой, зная, что это проблема с валидатором, а не с моим кодом.

...