如何获取HTML中所有文本节点?

比如以下body中

<body>
  <div class="container">
    asdf
    <div>
      Lorem ipsum dolor sit
      <p>!!!!</p>
      nesciunt ipsa cumque!
    </div>
    <p>test3</p>
  </div>
</body>

想获取一个数组

['asdf', 'Lorem ipsum dolor sit', '!!!!', 'nesciunt ipsa cumque!', 'test3']
阅读 8k
4 个回答
const res = document.querySelector('*').innerText.split('\n');
console.log(res);

res就是得到的结果了

难道没人提到xpath语法?我觉得也相当简单啊(我用xmllint在终端演示的):

$ echo '<body>
  <div class="container">
    asdf
    <div>
      Lorem ipsum dolor sit
      <p>!!!!</p>
      nesciunt ipsa cumque!
    </div>
    <p>test3</p>
  </div>
</body>' | xmllint --html --xpath '//text()' -

# 输出结果(未trim)

  

    asdf
    

      Lorem ipsum dolor sit
      
!!!!

      nesciunt ipsa cumque!
    

    
test3

如果是获取单纯文本:document.body.innerText

如果是获取节点,那得用babel转语法树

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏