標準でクロスブラウジング無しなら、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 |
× |
改行あり |
× |
改行なし |
改行なし |