运营同学问:后端返回的一串元素标签,我想在网页中显示的时候,将标签中的内容渲染出来,不希望直接显示标签。

回答: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

problem:浏览器如何区分html超文本和普通文本的更多相关文章

  1. Lodop打印控件输出页码(超文本和纯文本页码)

    Lodop打印控件打印超文本既可以手动分页,也可以自动分页,自动分页可阅读本博客的另一篇博文:Lodop打印控件 超文本自动分页 自动分页的时候,往往是不知道需要打印的内容到底分了几页,也就不可能预先 ...

  2. web开发中不同设备浏览器的区分

    通常区分不同设备浏览器是用JavaScript中的navigator.userAgent.toLowerCase()方式获取浏览器的userAgent信息 //使用javascript判断是否是iPh ...

  3. 阻止浏览器关闭 区分刷新和关闭 自试IE可用

    window.onbeforeunload = onbeforeunload_handler; function onbeforeunload_handler(){ if(event.clientX& ...

  4. springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux

    //我的会员中心 头像上传接口 /*windows 调试*/ @Value("${appImg.location}") private String winPathPic; /*l ...

  5. LODOP中纸张高度不定超文本和纯文本对比

    关于纸张高度不定的小票打印,建议使用纯文本进行设计,避免纸张高度引起变形,或超文本解析差异造成一些影响:LODOP纸张高度不定的纯文本累计高度 上面的链接的博文里,纯文本可通过间距和高度值累计,得出最 ...

  6. 不同浏览器下的CSS HACK

    今天接了个新项目,年底要做完.预祝我顺利完成工作吧.在搭CSS框架的过程中,遇到了一些浏览器兼容性问题.于是就统计一下各个浏览器专用的css hack吧. (粘贴自百科百科) 针对火狐浏览器的CSS ...

  7. js 检测浏览器

    首先还是IE浏览器的检测,一般我们在写代码的时候,出现的兼容性bug几乎都来自IE.从IE10以后,IE还算有点良心,支持了大部门的CSS3及H5的新特性.那么在IE10之前呢,就要才去别的手段来代替 ...

  8. navigator.userAgent浏览器检测(前端基础系列)

    对于前端来说,浏览器检测已经不陌生了,在做一些页面是,需要针对不同的浏览器进行处理不同的逻辑,最简单的就是区分pc和移动端的浏览器,或是android 和ios下的浏览器. 一.浏览器检测的由来?  ...

  9. LODOP中的纯文本和超文本打印项

    LODOP中的的打印项,有超文本也有纯文本,超文本指的是用html语言,html里的标签为值的打印项,该种打印项会经过浏览器解析,LODOP本身不带解析超文本的引擎,调用的windows底层引擎,与i ...

随机推荐

  1. Django框架简介-模板系统

    2.4 模板 官方文档 2.4.1 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 2.4.1.1 变量 {{ 变量名 }} 变量名由字母数 ...

  2. django中的中间件

    中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责 ...

  3. 在Postman中使用不受信任的SSL证书(转)

    add by zhj: 在http://www.cnblogs.com/ajianbeyourself/p/3898911.html中提到: 对于不受信任的证书,浏览器会发出告警,不过这些也只是告警而 ...

  4. 2018,ANG发展峰会惊喜来袭

    区块链的分享——ANG发展峰会重大来袭!2018年10月28日 时至今日,区块链技术已经被越来越多的人所熟知.法国著名的高新公司——凡赛公司汇集世界区块链专家,斥巨资打造了行业领先的区块链技术团队,并 ...

  5. UVa 11134 - Fabled Rooks 优先队列,贪心 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  6. 使用Stickers拓展集成iMessage简单功能

    添加一个target,选择Stickers拓展: 然后就会出现iMessage的文件夹:添加你需要的iMessage图片,这里图片遵循下面的要求: Small: 100 x 100 pt @3x sc ...

  7. mysql 判断某字段是否包含中文

    SELECT col FROM table WHERE LENGTH(col) != CHAR_LENGTH(col) LENGTH() 函数:返回字符串的长度,已字节符为单位 CHAR_LENGTH ...

  8. C语言的通用指针类型(void *)

    reference: https://blog.csdn.net/cumirror/article/details/4631701 https://blog.csdn.net/Lee_Shuai/ar ...

  9. ES6新特性,对象的快速创建

    //es6对象快速赋值 //es5对象赋值 var name="xiaoming"; var age=18 var person={ name:name, age:age } co ...

  10. MySQL:视图

    视图 一.视图的概述 1. 含义:是从数据库中一个或多个表中导出的虚拟表2. 作用:①简单化 ②安全性 ③逻辑数据独立性3. 注意:一个表可以由多个视图: 二.视图的创建 1. 总的语法形式 CREA ...