thickboxがおかしくなる(IE8限定)
※ 原因判明
これがもうびっくりするようなというか腰が抜けるような原因。bodyの最後に thickboxが入っていた。WordPressの script-loader.phpが thickboxL10nを差し込むようなんだけど、どのプラグインを使うとこれが差し込まれるかまでは調査せず。contact form 7あたりが怪しい気がするけど、ほかでもよく使ってるしなぁ。
で、自分で herder.phpに入れた thickboxとダブルで動いていたので、ウィンドウを二重に書いていたということで、チャンチャン。
標記の通りなんですが、「thickbox ie バグ」で検索したときに出てくるような、IEのバージョン判定の違いではありません。
thickboxやjQueryは問題ないとされてるバージョンですし。
動きを追ってみると、jQuery(domChunk).click()がIE8のときだけ 2回呼ばれている様子。
だから右の画面のように、1回ちゃんとウィンドウを描画したあとに、2回目を描いてウィンドウがつながっちゃっていると。
return false; してるはずなのに、なんでリエントラントしてるんだ?
そこを追っかけるのは大変なので、お手軽にグローバル変数を用意して、同じファイルを2度続けて描画しないようにしました。
var tb_init_a = ""; function tb_init(domChunk){ jQuery(domChunk).click(function(){ var t = this.title || this.name || null; var a = this.href || this.alt; var g = this.rel || false; if (tb_init_a != a) { tb_init_a = a; tb_show(t,a,g); this.blur(); } return false; }); } function tb_remove() { tb_init_a = ""; jQuery("#TB_imageOff").unbind("click");
tb_remove()でグローバル変数の後片付けをしておかないとウィンドウを閉じて、同じウィンドウを開こうとしても二度と開かないので注意。