我正在尋找處理解析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一樣過早死亡。 –