2012-01-26 11 views
2

のは、私はそうのようなテキストノードの内容を読み取るとしましょう:テキストノードの文字数が実際にウェブページに表示される数をカウントするには?

s = current_node.getSelection().anchorNode.nodeValue; 

により、この一つのノードにWebページ上に表示されている文字数を数えるための最良の方法は何ですか?例えば、 がリテラル文字列として表示されるので、これらを探す必要はありません。複数のスペースを1つの文字として連続して数えたいのですか?私が目にする必要があるものは他にありますか?

答えて

3

あなたは、このようなノードに何があるかのテキストバージョンのブラウザを頼むことができます。

var node = current_node.getSelection().anchorNode; 
var text = node.textContent || node.innerText; 
var length = text.length; 

これは、すでに彼らの通常の文字にエンティティを変換し、任意のHTMLタグが含まれませんがあります。複数のスペースが複数のスペースとして出てきますが、それはブラウザのこの機能がどのように機能するかです。ここ

var node = current_node.getSelection().anchorNode; 
var text = node.textContent || node.innerText; 
text = text.replace(/ +/g, " "); 
var length = text.length; 

例:http://jsfiddle.net/jfriend00/FpsGq/

+0

... 'text.length'あなたがHTMLには、複数の シーケンスがなかったことをかなり確信していた場合は、このような複数のスペースを折り畳むことができ – Ben

0

「ウェブページに表示する」という文字どおりに意味するかによって異なります。オーバーフローで隠された文字をコンテナにオーバーフローさせると、CSSルールによって隠されているため、Webページに表示されません。空白のシリーズを凝縮そのほかに

、無視して(それが適用される場合<前> < /前>のように、)改行やキャリッジリターンを脱出して、エスケープ文字を凝縮することは、あなたが必要とするすべてである必要があります。私は少なくとも、他の縁の事例は考えられません。