標準でクロスブラウジング無しなら、replace なんですが、< や > に変換されている場合は、 innerHTML で < と > に戻るので、他は < と > を保持するのに対して、replace のみ 取り去ってしまいます。 となると、jQuery にまかせたほうが良いという事になります。 こうして並べてみると、Google Chrome の text が特異に見えます。元々は、IE の innerText が特異ではあったと思うのですが、Google Chrome が innerText を実装している流れで、text を改行ありにしたんだろうとは思います。改行無しなら textContent でいいわけですし。
<script> if ( !window.jQuery ) { if ( typeof window[window.location.hostname+'.loadjQuery'] === 'undefined' ) { if ( window.addEventListener ) { window[window.location.hostname+'.loadjQuery'] = '//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js'; } else { window[window.location.hostname+'.loadjQuery'] = '//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js'; } } document.write("<"+"script src=\"" + window[window.location.hostname+'.loadjQuery'] + "\"></"+"script>"); } </script> <a id="target" href="http://winofsql.jp"><b>あああ</b><br/><b>いいい</b><br/></a> <script type="text/javascript"> var obj = document.getElementById("target"); if ( obj.textContent ) { alert("textContent:" + obj.textContent ); } if ( obj.innerText) { alert("innerText:" + obj.innerText); } if ( obj.text ) { alert("text:" + obj.text); } var htmlString = document.getElementById("target").innerHTML; var htmlString = htmlString.replace(/<[^>]+>/g, ""); alert("replace:"+htmlString ); alert( "jQuery:" + $("#target").text()); </script>
textContent | innerText | text | replace | jQuery | |
Chrome | 改行なし | 改行あり | 改行あり | 改行なし | 改行なし |
Firefox | 改行なし | × | 改行なし | 改行なし | 改行なし |
IE10・IE11 | 改行なし | 改行あり | 改行なし | 改行なし | 改行なし |
IE9 | 改行なし | 改行あり | × | 改行なし | 改行なし |
IE8 | × | 改行あり | × | 改行なし | 改行なし |