使用.insertAdjacentHTML
方法比.innerHTML
有什麼好處?是否有任何令人信服的理由使用.innerHTML
而不是.insertAdjacentHTML
?哪個有更好的表現? .innerHTML
如何工作?什麼是其他的選擇?.insertAdjacentHTML與替代品的優點?
回答
有幾個好處.insertAdjacentHTML
已經超過.innerHTML
。首先是表現。在進行的基準測試中,.innerHTML
在滿五秒的時間內稍微超過了200條Twitter推文。另一方面,在相同的時間框架內附加了近30,000個。需要追加的數據越多,執行的情況就越糟糕。但請注意,在這種情況下,數據是使用.innerHTML +=
附加的。
另一個好處是控制。 .insertAdjacentHTML
可以讓你控制你想要追加數據的位置,而`.innerHTML不會。
.insertAdjacentHTML
的最終好處是它不會破壞DOM。 .innerHTML +=
的工作原理如下。
- 它通過序列 元件的後代獲取的
.innerHTML
值。 - 它將+ =的右邊追加到字符串。
- 它刪除元素的孩子。
- 它解析新的字符串, 包含舊的後代的序列化後跟一些 新的標記。 很明顯,最後的好處並不適用於使用
.innerHTML =
的情況。
到.innerHTML
其他替代方案是.insertBefore
方法,它顧名思義插入一個節點作爲另一個節點前的孩子,以及這將插入一個子節點的最後一個節點.appendChild
方法。
.insertAdjacentHTML
是一種多功能工具,因爲它可以執行.innerHTML
,.insertBefore
以及.appendChild
的作業。
來源:https://hacks.mozilla.org/2011/11/insertadjacenthtml-enables-faster-html-snippet-injection/
你的問題沒有說使用'+ ='和'.innerHTML',所以我不確定你的答案爲什麼要處理這種情況。這幾乎就像你沒有讀過你自己的問題。 –
我編輯了這個問題,目前我的答案是一樣的。 – Azrael
- 1. @「」的替代品?
- 2. 開源替代品的點網
- 3. ASIHTTP的最佳替代品,替代品或替代品用於下載隊列
- 4. Flash的狀態與替代品?
- 5. Pieceable的替代品
- 6. NowJS的替代品
- 7. Flash的替代品?
- 8. RelativeLayout的替代品?
- 9. JMegahal的替代品
- 10. JodReports的替代品
- 11. Git的替代品?
- 12. YQL的替代品
- 13. window.scrollMaxY的替代品?
- 14. FMINCON的替代品
- 15. SuperSized的替代品
- 16. reCAPCTHA的替代品?
- 17. wx.lib.masked.NumCtrl的替代品
- 18. webistrano的替代品?
- 19. PathListBox的替代品
- 20. CKAN的替代品
- 21. SwaggerHub的替代品
- 22. Wakelocks的替代品?
- 23. fancybox的替代品?
- 24. Dreamweaver的替代品?
- 25. pdftohtml的替代品
- 26. MSMQ的替代品
- 27. SRSPlus的替代品?
- 28. Webview的替代品?
- 29. NSMutableDictionary的替代品?
- 30. @VisibleForTesting的替代品
這兩者是完全不同的。使用其中一個的原因取決於情況。 –