我正在尝试将 DOM 节点及其所有子节点转换为我设计的纯文本标记。我可以node.childNodes
用来获取所有内容的列表并递归地将其转换为我的字符串格式。
但是,当我从 中取出文本时TextNode
,它会包含页面上不可见的换行符和空格。对于纯文本,我希望获得与 HTML 相同的外观 - 因此文本之前不应该有很多缩进或之后的换行符,即使它们在 HTML 标记中,因为我的浏览器在它时将它们剥离了呈现 HTML。
显而易见的答案是.trim()
我自己的字符串 - 除了这可以去掉文本中应该存在的空格,例如<em>text.</em> moretext
. 后一个文本节点丢失了它之前的空间。
即使这样有效,它在哲学上也没有吸引力。我希望这个算法基于呈现给用户的文本。该网页在底层标记中隐藏了诸如空格、制表符和换行符之类的实现细节,我希望使用它用来修剪它们的任何东西,而不是trim()
. 理想情况下,会有一个等效的node.textContent
列表,其中包含纯文本和子元素的列表。
我还没有找到任何关于这个的东西,我也看不到一个好的方法来编码它以聪明地处理这些空间(缺少比较.textContent
和.nodeValue
字符串或解析innerHTML
自己或其他东西)。帮助?