運營同學問:后端返回的一串元素標簽,我想在網頁中顯示的時候,將標簽中的內容渲染出來,不希望直接顯示標簽。
回答:bootstrap加模版組織的網頁,模版渲染的數據只能渲染字符串,不能轉化富文本。
運營同學問:瀏覽器是怎么區分富文本和字符串?
...
上面的對話其實存在很多問題:
1、瀏覽器應該是如何區分將一段標簽是原樣輸出,還是渲染標簽內容
2、這其實應該是普通文本和超文本(html)的區別
3、那么什么是富文本,富文本和純文本的關系,和html的關系?
上面的問題解答:
1、dom元素中的內容是一個html即超文本,瀏覽器就會對內容進行解析渲染,比如p標簽就渲染成段落,h1標簽就渲染成標題;如果dom元素中的內容是一個普通文本,就會將內容原樣輸出,即只顯示內容,沒有樣式。
原生js中,可以通過innerText給元素添加文本內容,通過innerHTML給元素添加超文本內容

需要注意的是,文本內容轉化成html,瀏覽器在渲染該內容時,會對該內容進行一個轉義的過程,例如:會將<轉義成<。
2、超文本(html文本)和普通文本的區別?
普通文本(或者說純文本):只有內容,沒有樣式和語義的文本
超文本:html即超文本標記語言,一種用標簽來語義化內容的文本,比如p標簽代表段落、h1代表主標題等。
超文本內容中包含的標簽在瀏覽器中是看不見的,標簽會被瀏覽器解析渲染。
總結:
也就是通過js我們可以對html頁面文檔元素進行增刪改,使用模版對頁面進行數據渲染,實質上也是在通過js對頁面中的dom元素進行內容插入(修改)操作,我們常用的都是通過js給dom元素中插入兩種類型的內容:文本類型、元素類型(即html類型的內容,html文本會被瀏覽器解析,文本中包含的標簽會被解析成對應的標簽元素)
3、 那么什么是富文本,富文本和純文本的關系,和html的關系?
富文本的格式和超文本的格式類似,只不過前者包含了編輯器有編輯的功能,富文本編輯器支持顯示內容(文本、圖片、鏈接等),也支持內容樣式的顯示,純文本只顯示文本內容。
引申問題:
1、從瀏覽器輸入地址到頁面展示這個過程都發生了什么
2、瀏覽器如何解析渲染html
參考資料:
瀏覽器背后的原理:https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#disqus_thread
html入門(包含超文本和普通(純)文本的區別的解釋):https://www.kancloud.cn/ask_yang/web-html5/608086
文本、富文本、html:https://www.ibm.com/support/knowledgecenter/zh/SSYJ99_8.5.0/wcm/wcm_dev_elements_text-richtext-html.html
在線富文本編輯器:https://www.layui.com/demo/layedit.html
瀏覽器解析html的流程:https://tangxiangmin.github.io/2017/02/19/%E6%B5%8F%E8%A7%88%E5%99%A8%E8%A7%A3%E6%9E%90HTML%E7%9A%84%E6%B5%81%E7%A8%8B/
瀏覽器渲染過程和原理:https://juejin.im/entry/59e1d31f51882578c3411c77
textcontent與innerText、innerHtml的區別:https://developer.mozilla.org/zh-CN/docs/Web/API/Node/textContent
