動的にiframeを生成した画面に戻るボタンで戻った時の問題
動的にiframeを生成した画面に戻るボタンで戻った時、再度、動的にiframeを生成すると正しいURLでiframeがロードされない場合があるとの事
会社のIE8で試したら再現した。iframeの削除を行わなければ問題は無さそう。
回避策がないかsetTimeout使ったりいろいろ試したとこIE8の場合は以下で回避できる(spanのゴミが残るが・・・これもremoveすると回避できない)
$('a.click').click(function(e){ e.preventDefault(); $('div#screen') .find('iframe').remove().end() .append('<iframe src="'+$(this).attr('href')+'"></iframe><span/>') ; });
html('')でなくremove()で消さないとダメみたい
ちなみにShift_JISなHTML出力の場合、iframeをajaxの代用とすることがよくあるので問題ないか調べてみた
1つのiframeを使いまわす方法
var ifm = $('<iframe></iframe>').appendTo('#screen'); $('a.click').click(function(e){ e.preventDefault(); ifm.unbind('load.ajax').bind('load.ajax',function(){ alert('load ok'); }) .attr('src',$(this).attr('href')); });
問題なし
リクエストの都度iframeを生成する方法(loadイベントでremoveする)
$('a.click').click(function(e){ $('<iframe src="'+$(this).attr('href')+'"></iframe>').load(function(){ alert('load ok'); var target = $(this); setTimeout(function(){ target.remove(); },100) }).appendTo('#screen') return false; });
問題なし