電気ウナギ的○○

About Home

IEはシングルクォーテーションが文字参照されちゃってもJSが動く

shinoda (2015年5月 8日 15:52)
うーむ・・・
相変わらず InternetExplorer の動き、気持ち悪いな(^^;

今日、ASP.NET で吐き出した HTML ソースで JavaScript がうまく動かなくて昼からずっとハマってたんだけど、同じ内容のものを(実際は aspx.vb プログラム内で動的に作られる)手で作って動かすとちゃんと動く。でも、ASP.NET の画面では動かない・・・

ところが・・・だ。
ずっと Chrome でデバッグしてたんだけど(開発者向けのツール類が一番充実してるからな)、ふと InternetExplorer で動かしてみると動くやないか!!
ソースを見てみると、シングルクォーテーションが数値文字参照されちゃってるじゃん。

JavaScript内で、例えば「document.getElementById('hoge').style.display='none';」が「document.getElementById('hoge').style.display='none';」になっちゃうわけで、Chrome で実行すると「未定義または NULL 参照のプロパティ 'style' は取得できません」とエラーになる。

下のような HTML のソースで試してみると、Chrome では「男」のラジオボタンをチェックしても何も起こらないが、IEだと「女」も「男」もちゃんと下にメッセージが表示される。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>TEST</title>
</head>
<body>
<form id="form1">
<input type="radio" name="b" id="b1" onclick="document.getElementById(&#39;d2&#39;).style.display=&#39;none&#39;; document.getElementById(&#39;d1&#39;).style.display=&#39;block&#39;"> 男<br>
<input type="radio" name="b" id="b2" onclick="document.getElementById('d1').style.display='none'; document.getElementById('d2').style.display='block';"> 女<br>
</form>
<br>
<div id="d1" style="display: none;">
俺は男だ!
</div>
<div id="d2" style="display: none;">
私は女よ!
</div>
</body>
</html>

うーん・・・

これ、例えば、document.form1.hoge.value = ''; で「シングルクォーテーション」を含む文字列をセットする時なんかどうなるんやろ?
「私は'悪戯天使'です」だと、document.form1.hoge.value = &#39;私は&#39;悪戯天使&#39;です&#39;; とかなっちゃうけど、ちゃんと理解するんやろか?

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3411

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE