参考理解

https://www.e-learn.cn/content/html/1765240

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/innerHTML

Element.innerHTML 属性设置或获取HTML语法表示的元素的后代。

如果一个 <div><span>, 或 <noembed> 节点有一个文本子节点,该节点包含字符 (&), (<),  或(>)innerHTML 将这些字符分别返回为&amp;, &lt; 和 &gt; ,使用Node.textContent  可获取一个这些文本节点内容的正确副本。

innerHTML会获取页面中html标签起始至标签结束中间的所有内容包括后代元素的html标签与其中的内容

通过innerHTML进行赋值会清空所选标签内的所有内容后在进行赋值,innerText与textContent均如此

正如其名称,innerHTML 返回 HTML 文本。通常,为了在元素中检索或写入文本,人们使用innerHTML。但是,textContent通常具有更好的性能,因为文本不会被解析为HTML。此外,使用textContent可以防止 XSS 攻击。

用 innerHTML 插入文本到网页中并不罕见。但这有可能成为网站攻击的媒介,从而产生潜在的安全风险问题。

const name = "John";
// assuming 'el' is an HTML DOM element
el.innerHTML = name; // harmless in this case // ... name = "<script>alert('I am John in an annoying alert!')</script>";
el.innerHTML = name; // harmless in this case
尽管这看上去像 cross-site scripting 攻击,结果并不会导致什么。HTML 5 中指定不执行由 innerHTML 插入的 <script> 标签。 然而,有很多不依赖 <script> 标签去执行 JavaScript 的方式。所以当你使用innerHTML 去设置你无法控制的字符串时,这仍然是一个安全问题。例如: const name = "<img src='x' onerror='alert(1)'>";
el.innerHTML = name; // shows the alert
基于这个原因,当插入纯文本时,建议不要使用 innerHTML 。取而代之的是使用 Node.textContent ,它不会把给定的内容解析为 HTML,它仅仅是将原始文本插入给定的位置。

  

textContent会获取所有元素的content,包括`<script>`和`<style>`,'<title>'元素内容,innerText不会获取`<script>`和`<style>`<title>元素内容

innerText最早是由IE引入的,并于2016年正式成为了HTML的标准,innerText 对IE的兼容性较好 ,textContent虽然作为标准方法但是只支持IE8+以上的浏览器 ,最新的浏览器,两个都可以使用,在 IE (小于等于IE11的版本)中对 innerText 进行修改, 不仅会移除当前元素的子节点,而且还会永久性地破坏所有后代文本节点(所以不可能再次将节点再次插入到任何其他元素或同一元素中)

innerText受 CSS 样式的影响,会引起reflow,textContent不会

innerText返回值会被格式化,每个元素内容独占一行,而textContent不会,源码是什么样子,提取的内容就是如何,可以理解为innerText根据页面可见元素内容提取元素内容,textContent根据源代码可见的元素内容提取以上内容

•innerText不会获取hidden元素的content,而textContent不会

归属区别

  • textContent 是 Node 对象的属性;
  • innerHTML 是 Element 对象的属性;
  • innerText 是 HTMLElement 对象的属性;

火狐不支持innerText,需要使用textContent,兼容代码案例

FireFox不支持InnerText的解决方法

<table>
  <tr>
    <td onclick="getDetail(this)">zhangtongzct</td>
  </tr>
</table>
  通过点击table中td,获取td中的值,在一般浏览器,ie,360,谷歌中都支持innerText,但是火狐支持innText 火狐中要用textContent,所以代码我们应该这样写 function getDetail(obj){
var str= obj.innerText;
if( str == null ) str = obj.textContent ; // 兼容火狐
return str;
}

  

最新文章

  1. 打出10的n次方,上标,下标等处理方法(mac)
  2. Android UI编程(1)——九宫格(GridView)
  3. [Solution] ASP.NET Identity(2) 空的项目使用
  4. VirtualBox 设置共享文件夹自动挂载
  5. 从SVN导出指定版本号之间修改的文件
  6. mybatis系列-04-mybatis开发dao的方法
  7. 配置hibernate出现的错误一
  8. SZU:G34 Love code
  9. fileupload实现控制大小进行图片上传
  10. http response
  11. HDU 1068 Girls and Boys 二分图最大独立集(最大二分匹配)
  12. nginx 重启
  13. mysql8操作命令(持续更新)
  14. caffe中的卷积
  15. 最近素数问题——C语言
  16. Python3 数据库连接
  17. Vue怎么使用Echarts创建图表
  18. Kafka 0.8 NIO通信机制
  19. 48位MAC转化为唯一的128位IPV6地址
  20. Spring使用java代码配置Web.xml进行访问service

热门文章

  1. [Python]BeautifulSoup标签的遍历
  2. 简单的登录验证小程序_python
  3. Microsoft Visual Studio 显示行号
  4. ubantu安装apache
  5. SE篇
  6. Appnium 环境搭建
  7. 题解【洛谷P3958】[NOIP2017]奶酪
  8. flask入门(二)
  9. 怎样判断一个exe可执行程序是32位的还是64位的(转)
  10. 前后端交互技术之servlet与form表单提交请求及ajax提交请求