首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证JavaScript生成的动态HTML

验证JavaScript生成的动态HTML
EN

Stack Overflow用户
提问于 2011-10-13 17:28:08
回答 4查看 3.9K关注 0票数 4

如何检查JavaScript生成的内容是否有效?例如,以下文档将通过静态超文本标记语言验证(例如validator.nu),不会产生任何JavaScript错误,并且将在浏览器中无故障地呈现:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>test</title>
        <script>
            window.onload = function() {
                var text = document.createTextNode('nested anchor');
                var anchor = document.createElement('a');
                var nested_anchor = document.createElement('a');
                nested_anchor.appendChild(text);
                anchor.appendChild(nested_anchor);
                document.getElementsByTagName('body')[0].appendChild(anchor);
            };
        </script>
    </head>
    <body>
        <p>test</p>
    </body>
</html>

但是,输出在另一个锚元素中包含一个锚,根据HTML5规范,这是无效的。有没有办法检查这类错误?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-13 17:39:56

您可以将生成的HTML作为字符串输出,将其嵌入到有效文档中,然后将其发送以进行验证。在您的示例中,使用jQuery var htmlText = $(anchor).html()

或者更简单,输出整个生成的html console.log($("html").html())

票数 3
EN

Stack Overflow用户

发布于 2011-10-13 17:54:08

一种可能是使用Web Developer toolbar (Chrome和Firefox)的验证本地HTML功能。此功能将使用W3 validator来验证生成的超文本标记语言。

除了下载扩展,您还可以使用my JavaScript bookmarkletvalidate本地HTML。创建一个书签,并将下面的代码粘贴到"URL“字段。然后,每当您想要验证本地HTML时,单击bookmarklet。

下面的代码是独立的,不需要任何框架。

代码语言:javascript
运行
复制
javascript:void(function(){
    var form = document.createElement("form");
    form.method = "POST";
    form.enctype = "multipart/form-data";
    form.action = "http://validator.w3.org/check";
    form.target = "_blank";

    /* Get local HTML*/
    var html = "<html>" + document.documentElement.innerHTML + "</html>";
    var post_data = {
        fragment: html,/*Settings for validator*/
        prefill: "0",
        doctype: "HTML5",
        prefill_doctype: "html401",
        group: "0",
        ss: "1",
        outline: "1"
    };
    for(var name in post_data){
        (function(){
            var t = document.createElement("textarea");
            t.name = name;
            t.value = post_data[name];
            form.appendChild(t)
        })()
    }
    document.body.appendChild(form);
    form.submit(); /* Open validator, in new tab*/
    document.body.removeChild(form);
})()
票数 2
EN

Stack Overflow用户

发布于 2013-06-17 21:17:25

“只需在完全加载后保存html源代码,并使用该静态文件进行验证。”

我认为,如果这样做有效的话,当浏览器从DOM中截取HTML快照时,它将修复许多问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7752058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档