在我的网站上,我正在使用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>
我的doc类型是XHTML Strict。
当我尝试验证页面时,出现以下错误: “文档类型不允许元素”div“here” 和 “省略了”div“的结束标记,但指定了OMITTAG NO”因为div标记未关闭。
有没有办法使用jquery并让它验证?
答案 0 :(得分:8)
如果您将HTML注释标记放入脚本块,验证程序将忽略该代码块并正确验证。
<script type="text/javascript">
<!--
$('#s4').before('<div id="nav">').cycle({
fx: 'turnDown',
speed: 'fast',
timeout: 3000,
pager: '#nav'
});
//-->
</script>
答案 1 :(得分: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>
有关详细信息,请查看以下页面:
答案 2 :(得分:1)
你可以通过这样做来摆脱错误:
$('#s4').before('<' + 'div id="nav">').cycle({ ...
这应该使验证程序不会检测脚本标记内的任何HTML。我 - 我会接受错误,知道验证器的问题不是我的代码。