1. ホーム
  2. javascript

[解決済み】document.body.innerHTML から javascript で HTML を生成する。

2022-02-16 06:12:53

質問

HTML構文(おそらくスペースに置き換えるので、単語がすべて結合しているわけではありません)や句読点を使わずに、ウェブページの内容の文字列を作ろうと思っています。

ということで、コードがあるとします。

    <body>
    <h1>Content:</h1>
    <p>paragraph 1</p>
    <p>paragraph 2</p>

    <script> alert("blah blah blah"); </script>

    This is some text<br />
    ....and some more
    </body>

文字列を返したい。

    var content = "Content paragraph 1 paragraph 2 this is some text and this is some more";

どうすればいいのでしょうか?ありがとうございます。

解決方法は?

W3C DOM 3 Coreがあります。 テキストコンテンツ プロパティ、または MS/HTML5 の インナーテキスト プロパティをサポートしています(両方をサポートしているブラウザもあります)。script 要素のコンテンツは不要である可能性が高いので、DOM ツリーの関連する部分を再帰的に走査するのが最善と思われます。

// Get the text within an element
// Doesn't do any normalising, returns a string
// of text as found.
function getTextRecursive(element) {
  var text = [];
  var self = arguments.callee;
  var el, els = element.childNodes;

  for (var i=0, iLen=els.length; i<iLen; i++) {
    el = els[i];

    // May need to add other node types here
    // Exclude script element content
    if (el.nodeType == 1 && el.tagName && el.tagName.toLowerCase() != 'script') {
      text.push(self(el));

    // If working with XML, add nodeType 4 to get text from CDATA nodes
    } else if (el.nodeType == 3) {

      // Deal with extra whitespace and returns in text here.
      text.push(el.data);
    }
  }
  return text.join('');
}