javascript - 在不发送 HTTP 请求的情况下使用 documentFragment 解析 HTML

标签 javascript html dom html-parsing

我想解析一个字符串并从中生成 DOM 树。我决定使用 documentFragment API,到目前为止我是这样做的:

var htmlString ="Some really really complicated html string that only can be parsed by a real browser!";
var fragment = document.createDocumentFragment('div');
var tempDiv = document.createElement('div');
fragment.appendChild(tempDiv);
tempDiv.innerHTML = htmlString;
console.log(tempDiv);

但问题是这个脚本导致我的浏览器(特别是 Chrome)发送实际的 HTTP 请求!我是什么意思?以此为例:

var htmlString ='<img src="somewhere/odd/on/the/internet" alt="alt?" />';
var fragment = document.createDocumentFragment('div');
var tempDiv = document.createElement('div');
fragment.appendChild(tempDiv);
tempDiv.innerHTML = htmlString;
console.log(tempDiv);

这导致:

Chrome error

有什么解决方法吗?或任何其他更好的解析 HTML 字符串的想法?

最佳答案

您是将元素附加到页面,浏览器当然会获取内容。

您可以考虑使用 DOMParser

var htmlString ='<img src="somewhere/odd/on/the/internet" alt="alt?" />';
var parser = new DOMParser();
var doc = parser.parseFromString(htmlString , "text/html");

MDN Doc page 上有代码以支持 native 不支持它的浏览器。

关于javascript - 在不发送 HTTP 请求的情况下使用 documentFragment 解析 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12747350/

相关文章:

dom - 是否有可靠的算法来生成健壮的 DOM 节点选择器,只给定目标节点?

javascript - 如何使用 mapbox.js 在具有指定半径值的标记周围绘制圆圈

javascript - 在子点击时从父级中删除类 - jQuery

javascript - 在模态窗口中使用 tinyMCE

javascript - 如何在 Plottable.js 直方图中启用图例

html - css 宽度和高度不起作用

javascript - jquery获取请求错误

html - 带边距间距的 Flexbox 网格系统

javascript - "change"元素的 "input"和 `input` 事件之间的区别

javascript - 在 DOM 中可以使用 .notation 来获取/设置属性吗?