【问题标题】:Validating XHTML inside $.queue在 $.queue 中验证 XHTML
【发布时间】:2012-04-27 22:30:38
【问题描述】:

我正在使用以下 JavaScript:

.queue(function() {
            $('#num').html('10');
            element
                .html('First line<br /><span id="small">Small text<br />Small text again<br />small text again here</span>')
                .dequeue();
        })

当我通过 W3C 的验证器运行此程序时,它显示“文档类型不允许此处的元素 br/span”。

还有其他方法可以让它验证吗?

谢谢!

【问题讨论】:

  • 您可以使用 document.createElement(...) 并添加创建的元素(appendChild)
  • 它是如何工作的?对不起,我是个 JS 初学者!

标签: javascript xhtml w3c validation


【解决方案1】:

除非您使用 XHTML(除非您首先遇到其他几个错误),否则您不应该收到该错误,在这种情况下,您必须跳过“假装您的 XHTML 是 HTML”的许多麻烦。

在这种特定情况下,这是Embedded Style Sheets and Scripts 的准则。

简而言之,您应该将 JS 移动到外部文件或将其包装在 CDATA 标记中。

我建议改用 HTML(除非您实际上在生产链中使用 XML 工具,而大多数人没有这样做)。

【讨论】:

    【解决方案2】:

    使用pre 而不是多个spanbr

    '<pre>First line
    Small text
    Small text again
    small text again here</pre>'
    

    以下代码使用 JavaScript 控制台在 stackoverflow.com 上运行,并使用 W3C markup checker 进行验证:

    $("body").queue( function() { $(this).html("<pre>hi there</pre>") } ).dequeue();
    

    最低限度会产生:

    <!doctype html>
    <html>
     <head><title></title></head>
     <body>
     <pre>hi there</pre>
     </body>   
    </html>
    

    【讨论】:

    • 那里也不允许使用前置元素。
    • @Quentin 在 W3C 验证器或 jQuery 中?
    • &lt;script&gt; 元素内。 jQuery 的使用是无关紧要的。验证器只是告诉你这是不允许的。
    • @Quentin 脚本元素在哪里?
    • 重新编辑:以下代码适用于 stackoverflow.com — 正如我在回答中解释的那样,除非使用 XHTML,否则不应显示错误报告。 Stackoverflow 没有使用 XHTML。
    猜你喜欢
    • 2013-06-11
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2014-06-26
    相关资源
    最近更新 更多