【发布时间】:2018-07-15 19:13:05
【问题描述】:
我正在尝试从字符串(在 javascript 中)解析 html 并对 html 代码进行一些操作(所以我需要将 html 解析为节点,以便我可以轻松地操作每个节点),而不是我想插入到真实dom的节点。
我尝试使用new DOMParser(); api,但注入真实 dom 时的 javascript 标签和 noscript 标签将无法执行。
我尝试了createContextualFragment,但我的html代码有html/head/body标签......而createContextualFragment忽略了它们。
我需要能够在注入真实 dom 时保留所有 html 代码功能,包括 js、noscript ......
有什么想法吗?
代码示例: DomParser api:
var parser = new DOMParser();
htmlDoc = parser.parseFromString(htmlString, "text/html");
htmlDoc.querySelectorAll("*").forEach(function(node) {
//some manipulations....
//but if i inject the nodes to the real dom all js will not execute
}
创建上下文片段:
var DocumentFragmentDom = document.createRange().createContextualFragment(Html);
var DocumentFragmentLength = DocumentFragmentDom.children.length;
for(var i = 0 ; i < DocumentFragmentLength; i++ ){
//some manipulations
//but all head/body/html tags will be disregarded...
}
【问题讨论】:
-
i tried发布您的代码,以便我们可以使用 minimal reproducible example -
@CertainPerformance 发布:)
-
js没有执行是什么意思?
-
@Chiptus 你可以在这里明白我的意思:stackoverflow.com/questions/28112807/…
标签: javascript html parsing dom