2

Web ページの最初の n 文字を取得し、元のドキュメントに表示されているとおりに表示したいと考えています。

JavaScript を使用textContentしてテキストを取得し、テキストなしですべての DOM を再帰的に取得することを考えました (それが正しい用語であることを願っています)。しかし、それらを再結合することは非常に難しいようです。

また、おそらくこれを達成する簡単な方法があります。では、なぜ車輪を再発明するのでしょうか?

では、どうすればそれができるのでしょうか? (これを解決するためのアプローチを求めているだけで、コード全体を求めているわけではありません。)

4

1 に答える 1

2

次のコードは、ドキュメントの最初の35文字以降のすべてのテキストを削除します。完全に空白で構成されている非表示のテキストとテキストノードは無視されます。あなたはここでそれのデモンストレーションを見ることができます:

var limit = 35;
var current = 0;

function recurse(element) {
  if (element.childNodes.length > 0) {
    for (var i = 0; i < element.childNodes.length; i++) {
      recurse(element.childNodes[i]);
    }
  }

  if (element.nodeType == Node.TEXT_NODE && element.nodeValue.trim() != '' && window.getComputedStyle(element.parentElement).height != "auto") {
    var length = element.nodeValue.length;
    if (current < limit) {
      if(current + length > limit){
        element.nodeValue = element.nodeValue.substr(0, limit - current)
      }
      current += length;
    } else {
      element.nodeValue = "";
    }
  }
}
var html = document.getElementsByTagName('html')[0];
recurse(html);
于 2013-01-07T00:54:03.457 に答える