Hatena::ブログ(Diary)

Cyokodog::Memo RSSフィード

2011-01-18

動的に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_JISHTML出力の場合、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;
});

問題なし

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/cyokodog-memo/20110118/1295334221