数日前に↓の記事でIEのinnerHTMLの挙動にはまったと書きましたが、またはまりました。
【Javascript】IEのinnerHTML挙動と`(バッククォート)について
http://mfria.blog106.fc2.com/blog-entry-1660.html
今回は半角スペースです。
IEは文頭に半角スペースがある場合は除かれ、文中に半角スペースが複数ある場合には1つにまとめます。
例:
←ここには2つ半角スペースがあります。
→ ←ここには2つ半角スペースがあります。
これはよく知られた事ですが、Javascriptを使用しinnerHTMLやnodeValueで取得した場合も同様の値を取得してしまいます。
innerHTMLというのはその名の通りオブジェクト内の「HTML」を取得するものだと思ったのですが。。。
ソース通りに取得してくれるのが正しい挙動だと思うのですが。。。
IE6、IE7で当現象が発生する事を確認済み。
又、Firefox3.5.5では当現象は発生しないようです。
サンプルURL↓
http://jsbin.com/upeyi
サンプルソース↓
<html>
<head>
<script>
function testfunc() {
str = document.getElementById('test2').innerHTML
alert('[' + str + ']');
}
function testfunc2() {
str = document.getElementById('test').childNodes[0].firstChild.nodeValue;
alert('[' + str + ']');
}
</script>
</head>
<body>
<div id="test"><div id="test2"> blank blank </div></div>
<input type="button" value="CLICK ME1" onclick="testfunc()"><br>
<input type="button" value="CLICK ME2" onclick="testfunc2()">
</body>
</html>
K.Y
【Javascript】IEのinnerHTML挙動と`(バッククォート)について
http://mfria.blog106.fc2.com/blog-entry-1660.html
今回は半角スペースです。
IEは文頭に半角スペースがある場合は除かれ、文中に半角スペースが複数ある場合には1つにまとめます。
例:
←ここには2つ半角スペースがあります。
→ ←ここには2つ半角スペースがあります。
これはよく知られた事ですが、Javascriptを使用しinnerHTMLやnodeValueで取得した場合も同様の値を取得してしまいます。
innerHTMLというのはその名の通りオブジェクト内の「HTML」を取得するものだと思ったのですが。。。
ソース通りに取得してくれるのが正しい挙動だと思うのですが。。。
IE6、IE7で当現象が発生する事を確認済み。
又、Firefox3.5.5では当現象は発生しないようです。
サンプルURL↓
http://jsbin.com/upeyi
サンプルソース↓
<html>
<head>
<script>
function testfunc() {
str = document.getElementById('test2').innerHTML
alert('[' + str + ']');
}
function testfunc2() {
str = document.getElementById('test').childNodes[0].firstChild.nodeValue;
alert('[' + str + ']');
}
</script>
</head>
<body>
<div id="test"><div id="test2"> blank blank </div></div>
<input type="button" value="CLICK ME1" onclick="testfunc()"><br>
<input type="button" value="CLICK ME2" onclick="testfunc2()">
</body>
</html>
K.Y
| ホーム |

