我的页面上有一个iframe,我正在尝试重新加载内容。在所有其他浏览器中,只需执行以下操作即可实现:
$('#myFrame').contentWindow.location.reload(true)
然而,这在IE中不起作用(在9和8中测试),我发现我可以通过克隆iframes容器来重新加载,将克隆添加到页面并删除原始iframe,如下所示:< / p>
var pe = $(window.parent.frames['myFrame'].frameElement.parentElement);
clonedPe = pe.clone();
clonedPe.insertBefore(pe);
pe.remove();
我遇到的问题是,在原始的iframe中,我将一些代码添加到onload事件中,但是在克隆的iframe的加载中不会触发此事。
我的问题是....有没有更好的方法在IE中重新加载iframe - 或者 - 如何在重新加载时触发onload事件!?!
答案 0 :(得分: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及更高版本中,perferred方法是:
$(document).on('load', 'iframe', function () {...});
答案 1 :(得分:0)
这在FF和IE9中工作正常。
$('#myFrame').get(0).contentWindow.location.reload(true);