1. ホーム
  2. javascript

[解決済み] DOM要素内のテキスト行を数えるにはどうすればよいですか?どうすればいいですか?

2022-06-01 13:20:04

質問

divの中の行数をカウントする方法はないのでしょうか?例えばこんなdivがあったとします。

<div id="content">hello how are you?</div>

多くの要因によって、divは1行、2行、あるいは4行のテキストを持つことができます。スクリプトが知る方法はあるのでしょうか?

言い換えれば、自動改行は DOM でまったく表現されないのでしょうか?

どのように解決するのですか?

今は無理だと確信しています。昔はそうだったんですけどね。

IE7のgetClientRectsの実装は、まさに私の望むとおりになりました。開く このページ を IE8 で開き、ウィンドウ幅を変えながら更新してみて、それに応じて最初の要素の行数がどう変わるかを見てみましょう。以下は、そのページのjavascriptの主要な行です。

var rects = elementList[i].getClientRects();
var p = document.createElement('p');
p.appendChild(document.createTextNode('\'' + elementList[i].tagName + '\' element has ' + rects.length + ' line(s).'));

残念ながら、Firefox は常に要素ごとに 1 つのクライアント長方形を返し、IE8 も現在同じです。(Martin Honnen のページが今日動作するのは、IE がそれを IE 互換表示でレンダリングするからです。)

これは悲しいことです。Firefox の文字通りの、しかし価値のない仕様の実装が、Microsoft の有用な実装に再び勝利したように見えます。あるいは、新しい getClientRects が開発者を助けるような状況を見逃したのでしょうか?