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

发布于 2024-07-21 04:46:00 字数 603 浏览 9 评论 0原文

在我的网站上,我使用 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 并让它进行验证?

On my site I'm using the jquery cycle plugin for a slideshow with a pager.
This example:
http://malsup.com/jquery/cycle/pager.html

So in the head of my document, I have a script similar to:

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

My doc type is XHTML Strict.

When I try and validate the page, I get the following errors:
"document type does not allow element "div" here"
and
"end tag for "div" omitted, but OMITTAG NO was specified" because the div tag isn't closed.

Is there a way to use the jquery and get it to validate?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自控 2024-07-28 04:46:00

实际上,您的代码未验证的原因是因为 XHTML 中不允许使用某些字符(例如“<”等),因此必须将它们包装在 XHTML 中的 >CDATA 部分(由于 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. < a href="http://www.w3.org/TR/xhtml1/#h-4.8" rel="nofollow noreferrer">XHTML 1.0 建议:4.8。 脚本和样式元素
  2. 在 XHTML 文档中正确使用 CSS 和 JavaScript

Actually, the reason your code is not validating is because certain characters are not allowed in XHTML (e.g. "<", etc.) so they must be wrapped in CDATA sections in XHTML (due to the strict nature of XML parsing rules). HTML comment markers (specfically, the double dashes "--") are also not allowed and shouldn't appear in a SCRIPT block since they're not valid understandable JavaScript. So instead of using HTML comment markers, you should wrap your code inside a "CDATA marked section" to pass the validator and not confuse the JavaScript engines:

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

Take a look at the following pages for more information:

  1. XHTML 1.0 recommendation: 4.8. Script and Style elements
  2. Properly Using CSS and JavaScript in XHTML Documents
孤君无依 2024-07-28 04:46:00

如果您将 HTML 注释标签放入脚本块中,验证器将忽略该代码块并正确验证。

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

If you put HTML comment tags into your script block the validator will ignore that block of code and validate correctly.

<script type="text/javascript">
<!--
$('#s4').before('<div id="nav">').cycle({ 
    fx:     'turnDown', 
    speed:  'fast', 
    timeout: 3000, 
    pager:  '#nav' 
});
//-->
</script>
空袭的梦i 2024-07-28 04:46:00

您可以通过执行以下操作来消除错误:

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

这应该使验证器无法检测脚本标记内的任何 HTML。 我 - 我会忍受这个错误,因为我知道这是验证器的问题而不是我的代码的问题。

You could probably get rid of the errors by doing:

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

This should keep the validator from detecting any HTML inside your script tag. Me - I'd live with the error, knowing it was a problem with the validator not my code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文