为什么这不会验证(jquery问题)?

ema*_*anu 3 validation xhtml jquery xhtml-1.0-strict

在我的网站上,我使用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>
Run Code Online (Sandbox Code Playgroud)

我的doc类型是XHTML Strict.

当我尝试验证页面时,我得到以下错误:"文档类型不允许元素"div"here"和"end标记为"div"省略,但OMITTAG NO已指定"因为div标记未关闭.

有没有办法使用jquery并让它验证?

Red*_*ves 8

如果将HTML注释标记放入脚本块中,验证程序将忽略该代码块并正确验证.

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


Dav*_*ner 8

实际上,你的代码没有验证的原因是因为某些字符不被允许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>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看以下页面:

  1. XHTML 1.0建议:4.8.脚本和样式元素
  2. 在XHTML文档中正确使用CSS和JavaScript