problem:瀏覽器如何區分html超文本和普通文本


運營同學問:后端返回的一串元素標簽,我想在網頁中顯示的時候,將標簽中的內容渲染出來,不希望直接顯示標簽。

回答:bootstrap加模版組織的網頁,模版渲染的數據只能渲染字符串,不能轉化富文本。

運營同學問:瀏覽器是怎么區分富文本和字符串?

...

上面的對話其實存在很多問題:

1、瀏覽器應該是如何區分將一段標簽是原樣輸出,還是渲染標簽內容

2、這其實應該是普通文本和超文本(html)的區別 

3、那么什么是富文本,富文本和純文本的關系,和html的關系?

 

上面的問題解答:

  1、dom元素中的內容是一個html即超文本,瀏覽器就會對內容進行解析渲染,比如p標簽就渲染成段落,h1標簽就渲染成標題;如果dom元素中的內容是一個普通文本,就會將內容原樣輸出,即只顯示內容,沒有樣式。

       原生js中,可以通過innerText給元素添加文本內容,通過innerHTML給元素添加超文本內容

      div2.innerText = '<a href="#">你好呀</a>'
      div3.innerHTML = '<a href="#">不好也</a>'
      div4.innerHTML = '<a href="#">和呵護</a>'

需要注意的是,文本內容轉化成html,瀏覽器在渲染該內容時,會對該內容進行一個轉義的過程,例如:會將&lt轉義成<。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM