参考理解

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;
}

  

innerHTML,innerText,textContent的更多相关文章

  1. JS中innerHTML,innerText,value

    一·.JS初学者易混淆的问题:innerHTML,innerText,value(他们和JQ的区别:JS→value,JQ→value()) 1.getElementById("a" ...

  2. (转)JS中innerHTML,innerText,value

    原文:http://holysonll.blog.163.com/blog/static/21413909320134111054352/ JS中innerHTML,innerText,value 2 ...

  3. js中的innerHTML,innerText,value的区别

    首先先说一下 我自己认为的 innerHTML,innerText,value的区别 innerHTML 是在控件中加html代码 就是设置一个元素里面的HTML eg: <html> & ...

  4. JS魔法堂:被玩坏的innerHTML、innerText、textContent和value属性

    一.前言 由于innerText并非W3C标准属性,因此我们无法在FireFox中使用它(修正:FF45+已经支持innerText属性),一般情况下我们可以使用textContent来代替,但它两者 ...

  5. [转]被玩坏的innerHTML、innerText、textContent和value属性

    一.前言 由于innerText并非W3C标准属性,因此我们无法在FireFox中使用它,一般情况下我们可以使用textContent来代替,但它两者是否就能完全等同呢?在坑爹的表单元素(如input ...

  6. innerHTML,innertext ,textcontent,write()

    innerhtml属于对象的一个属性,一般用于向已经存在的标签中写入内容,或者读取标签的内容. innertext属于对象的一个属性,一般只能用于写入内容,或者读取内容,不能读取dom 中的标签,且只 ...

  7. JS之innerHTML,innerText,outerHTML,textContent的用法与区别

    示例html代码: <div id="test"> <span style="color:red">test1</span> ...

  8. innerHTML,innerText,outerHTML,outerText,value浅析

    首先是一个例子: <div id= "aa">0<br/>0<span>11</span>22</div><inp ...

  9. innerHTML,outerHTML,innerText,outerText

    - innerHTML 设置或获取位于对象起始和结束标签内的 HTML - outerHTML 设置或获取对象及其内容的 HTML 形式 - innerText 设置或获取位于对象起始和结束标签内的文 ...

随机推荐

  1. Win10安装7 —— 系统的优化

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12371356.html 一:引言 在我们使用电脑的过程中,总是有一些窗口弹出来需 ...

  2. [ZJOI2011] 最小割 - 最小割树

    最小割树裸题 建树后,以每个点为根跑DFS求出距离矩阵,然后暴力回答询问即可 #include <bits/stdc++.h> using namespace std; #define i ...

  3. js上传文件工具类

    个人博客 地址:http://www.wenhaofan.com/article/20180808210417 jQuery.extend({ uploadUtil:function(){ } }); ...

  4. vue里使用elementUI里的下拉树表格,如何定义个性化的子表格?

    最近项目写到一个业务,首先需要展示各类分组的基本信息,然后需要点击每个分组展示该分组下子的所有具体信息 一开始我是打算用tab来展示就是首先父分组的名称就是各个不同的tab按钮,然后点击按钮再展示不同 ...

  5. PHP csv文件30w+数据导入mysql数据库

    <?php class Add { public function data() { ini_set('memory_limit', '-1'); //PHP内存设置 $handle=fopen ...

  6. Markdown上手使用

    前言 学习Markdown主要是为了更好的编辑博客(捂脸),顺便学一学Markdown语法,毕竟MarkdownPad 2放着吃灰好久了(雾) MarkdownPad2 下载 链接:https://p ...

  7. Python 排序---sort与sorted学习(这是摘录别人的资源总结,自己可临摹学习)

    第一种:内建方法sort() 可以直接对列表进行排序 用法: list.sort(func=None, key=None, reverse=False(or True)) 对于reverse这个boo ...

  8. centos7下使用selenium实现文件上传

    1.pip install SendKeys 2. 利用js去掉元素的隐藏属性,然后输入: 一般控制元素显示或隐藏是用display属性来实现的 style.display = “none”,表示元素 ...

  9. 【填坑】python3 manage.py migrate:?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'

    问题: WARNINGS:?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'        H ...

  10. 终极教程【zhong】

    just for a better future! 资源教程               aiim                   综合类 前端知识体系 前端知识结构 Web前端开发大系概览 We ...