うーむ・・・
相変わらず 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('d2').style.display='none'; document.getElementById('d1').style.display='block'"> 男<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 = '私は'悪戯天使'です'; とかなっちゃうけど、ちゃんと理解するんやろか?
コメントする