特定の実体参照ってのは、以下の4つ。
[ 実体:" " ]
< [ 実体:"<" ]
> [ 実体:">" ]
& [ 実体:"&" ]
この4つを除く実体参照がinnerHTMLに設定されても、実体に置換されてしまう。
JavaScriptからではなく、HTMLに直接記述した場合も同様。
この4つの実体参照をinnerHTMLに設定した場合は、実体参照のまま設定されるのだが、
を除く3つの実体参照は、その実体をinnerHTMLやinnerTextに設定した場合も、
実体参照に置換されて設定される。 ( ただし、"&"に関しては、実体としてinnerHTMLに設定することはできない。 )
なお、数値文字参照 ( 例えば、< [ 実体:"<" ] ) を指定しても、文字実体参照 ( この場合、< ) に置換される。
検証コードvar div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
var div3 = document.getElementById("div3");
var div4 = document.getElementById("div4");
div1.innerHTML = ""ω"; // これらは実体に置換される。
div2.innerHTML = "\"ω"; // そのまま。
div3.innerHTML = "<>&"; // そのまま。
// ↓だと&を設定できない。
// div4.innerHTML = "<>&";
div4.innerText = "<>&"; // これらは実体参照に置換される。
alert(div1.innerHTML);
alert(div2.innerHTML);
alert(div3.innerHTML);
alert(div4.innerHTML);
ちなみに、HTMLに直接記述した場合にも、同様の処理が適用される。
[ 参考 ]
実体参照 - Wikipedia
Wikipedia:特殊記号 - Wikipedia
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/43-1aaf6354