1

我的頁面上有一個iframe,我試圖重新加載內容。在所有其他的瀏覽器,這是通過簡單地做實現:iframe中的OnLoad事件在重新加載後未在IE8中觸發

$('#myFrame').contentWindow.location.reload(true) 

然而,這並不在IE瀏覽器(在9測試8),我發現我可以讓它通過克隆I幀容器重裝,加入如下圖所示克隆到頁面中,移除原有的iframe:

var pe = $(window.parent.frames['myFrame'].frameElement.parentElement); 
clonedPe = pe.clone(); 
clonedPe.insertBefore(pe); 
pe.remove(); 

,我有是在原有的iframe我不得不加入到onload事件的一些代碼,但這不是對的負載點火的問題克隆的iframe。

我的問題是....是否有更好的方式重新加載iframe中的IE - 或者 - 我怎麼能得到onload事件發射重新加載!?!

回答

0

如果更改了iframe的來源,將刷新:

var pe = $(window.parent.frames['myFrame'].frameElement.parentElement); 
$.data(pe, 'src', pe.attr('src')); 
pe.attr('src', 'about:blank').attr('src', $.data(pe, 'src')); 

這裏是一個演示:http://jsfiddle.net/4ZgKh/1/

您也可以使用.delegate()因此事件處理程序將舉行綁定你的事件的iframe對於在事件處理程序綁定後插入到DOM中的任何匹配元素都爲true:

$(document).delegate('iframe', 'load', function() {...}); 

請注意,在jQuery 1.7和更大的推廣方法是:

$(document).on('load', 'iframe', function() {...}); 
0

這工作正常FF和IE9。

$('#myFrame').get(0).contentWindow.location.reload(true); 
+0

這工作刷新框架,但這是我以前在加載事件不會重新啓動相同的問題。 – Penfold 2011-12-15 15:12:14