DOM ノードとそのすべての子ノードを、デザインのプレーン テキスト マークアップに変換しようとしています。を使用node.childNodes
して、すべてのコンテンツのリストを取得し、それを再帰的に文字列形式に変換できます。
ただし、 からテキストを取り出すとTextNode
、ページに表示されない改行とスペースが含まれます。プレーンテキストの場合、HTML と同じ外観を取得したいので、HTML マークアップに含まれていたとしても、テキストの前に多くのインデントや改行があってはなりません。 HTML をレンダリングしました。
明らかな答えは.trim()
、自分自身の文字列に対するものです-ただし、これにより、テキストに存在するはずのスペースが削除される可能性があります<em>text.</em> moretext
. 後者のテキスト ノードは、その前のスペースを失います。
それが機能していたとしても、哲学的にも魅力的ではありません。このアルゴリズムは、ユーザーに提示されたテキストに基づいている必要があります。Web ページは、基になるマークアップのスペース、タブ、改行などの実装の詳細を隠していますtrim()
。node.textContent
理想的には、何らかの形でプレーンテキストと子要素の両方のリストを持つ同等のものがあるでしょう。
私はこれについて何も見つけることができず、それらのスペースについて賢くなるようにコーディングする良い方法がわかりません(.textContent
と文字列を比較したり、自分自身や何かを.nodeValue
解析したりする以外に)。innerHTML
ヘルプ?