Code

ラベル ie8 の投稿を表示しています。 すべての投稿を表示
ラベル ie8 の投稿を表示しています。 すべての投稿を表示

2014年12月2日火曜日

スクリプットタグでのテンプレート問題

 最近、IE 8 で Bad HTML の解釈が他のブラウザーと違ってて、プログラムが動かなくなったことが発見しました。
 基本的に、あってはいけないことですが、<script></script> の中に、他の <script> tag が定義されて、W3C の標準に違反になりますが、ブラウザーは自分の解釈で実行できてますけど、どうやら、この場合、IE 8 だけ、</div> が追加されるそうです。。。
 
 W3C の標準とブラウザーの実装は基本的に同じですので、</script> という close tag を探して、script の終了をわかるようになります。もし <script> の中に他の <script> tag を入れたら、このルールが破れますので、どのように実行するかはブラウザーに任せます。。。
 これで、最新のブラウザー (IE9 ~) は問題なく、正確な HTML と同じように解釈しますけど、 IE8 は独自のルールに従います。。。

 まぁ、IE 8 の使用率はもう 2% 以下だから、直さなくてもいいと思います。
 それでは。

2014年7月26日土曜日

cross-browser IE8 ボタン クリック問題

 最近仕事が変わりましたので、IE8 も対応ブラウザになりました。。。
 以前から、出て来た IE8 ボタンのクリック問題をまとめておきます。
1 まずは、radio ボタンをクリックしたら、何か動作を自動的に実行する場合、IE8 だと、クリックだけでは onchange イベントハンドラーが呼び出されない。これは、radio ボタンを focus を失うとき、onchange が trigger されます。。。まぁ、理解できますけど。。。
 直し方としては、radio ボタンにもう一個の onclick イベントハンドラーをバインドします。そのイベントハンドラーに
    $("radio button の selector").focus().blur()
を実行します。これで、onchange が自動的に呼ばれるようになります。

2 display:none のボタンの label をクリックしても、ボタンの状態が変わらない。。。
 これは display:none だから。直す方法が二つあります。display:none をやめて、opacity を 0 に設定したり、position を absolute に設定して、top: -9999px, left:-9999px を設定したりすることで、ボタン要素が見えないが、label のクリックは効くようになります。
 もう一つは Label に click ハンドラーをバインドして、もし label が click したら、for attribute で設定したボタンの click 関数を呼び出します。

 それでは。