C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2006/11/02 14:08
innerHTMLって、特定の実体参照以外は、勝手に解釈して実体(文字)に置換するみたい。
特定の実体参照ってのは、以下の4つ。

  [ 実体:" " ]
&lt; [ 実体:"<" ]
&gt; [ 実体:">" ]
&amp; [ 実体:"&" ]

この4つを除く実体参照がinnerHTMLに設定されても、実体に置換されてしまう。
JavaScriptからではなく、HTMLに直接記述した場合も同様。

この4つの実体参照をinnerHTMLに設定した場合は、実体参照のまま設定されるのだが、
&nbsp;を除く3つの実体参照は、その実体をinnerHTMLやinnerTextに設定した場合も、
実体参照に置換されて設定される。 ( ただし、"&"に関しては、実体としてinnerHTMLに設定することはできない。 )
なお、数値文字参照 ( 例えば、&#x3c; [ 実体:"<" ] ) を指定しても、文字実体参照 ( この場合、&lt; ) に置換される。

検証コードvar div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
var div3 = document.getElementById("div3");
var div4 = document.getElementById("div4");

div1.innerHTML = "&quot;&omega;"; // これらは実体に置換される。
div2.innerHTML = "\"ω"; // そのまま。
div3.innerHTML = "&lt;&gt;&amp;"; // そのまま。
// ↓だと&を設定できない。
// div4.innerHTML = "<>&";
div4.innerText = "<>&"; // これらは実体参照に置換される。

alert(div1.innerHTML);
alert(div2.innerHTML);
alert(div3.innerHTML);
alert(div4.innerHTML);


ちなみに、HTMLに直接記述した場合にも、同様の処理が適用される。

[ 参考 ]
実体参照 - Wikipedia
Wikipedia:特殊記号 - Wikipedia
タグ: JavaScript











トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/43-1aaf6354