我正在寻找处理解析HTML或XHTML(XML序列化)标记并将其插入到网页的DOM中的最佳方式,该网页可以是text/html或application/xhtml + XML。不希望使用像jQuery这样的库,而只关心与最新版Chrome的兼容性。DOMParser与模板和innerHTML的优点
我看到两种可能的解决方案。
模板&的innerHTML:
let temp = document.createElement('template'); temp.innerHTML = markuptext; document.body.appendChild(temp.content);
的DOMParser:
let parser = new DOMParser(); let doc = parser.parseFromString('<div xmlns="http://www.w3.org/1999/xhtml">' + markuptext + '</div>', 'application/xhtml+xml'); let frag = document.createDocumentFragment(), childNode; while (childNode = doc.documentElement.firstChild) { frag.appendChild(childNode); } document.body.appendChild(frag);
我希望有人能指出这两种方法的优势/劣势。
With Template & innerHTML我假设Chrome会根据页面的内容类型选择解析为HTML/XML,并且可能没有办法改变它。看来模板& innerHTML允许在<tbody>
以外的片段如<tr><td></td></tr>
,无论它是以HTML还是XML解析。 DOMParser也允许这样做,但如果它解析为XML,则只能使用。
DHTML属性** innerHTML **是一个功能完备的HTML解析器,它在即时(在所有浏览器引擎上)将HTML流序列转换为DOM树时具有高度优化和同等可靠性。作为奖励,它也可以对不完整的流进行错误更正。 –
@BekimBacaj'“它也可以对不完整的流进行错误修正”“我认为这是一个否定,如果是真的。 –
我认为这是一种奖励,因为唯一的原因是任何种类的数据结构化语言都是实际数据。这就是你感兴趣的全部内容,只要你得到你正在追踪的信息或等待,你根本不在乎它是如何构建的。无论如何,除此之外的任何行为注定会像xhtml一样过早死亡。 –