这是我的code:
<div id="myContent"></div>
$('#myContent').html('<iframe height="200" frameborder="0" src="www.google.com"></iframe>');
我想,当帧中的整个页面完全加载时,调用一个函数,如alert("I'm finished");
。
我该怎么做?
P.S。 dunno为什么jsfiddle没有抓住谷歌页面:))
答案 0 :(得分:8)
您可以使用事件.load()(请查看api以获取更多信息)。
实施例:
$('#myContent').html('<iframe id="winId" height="200" frameborder="0" src="www.google.com"></iframe>');
$('#winId').load(function() {alert('loaded')})
答案 1 :(得分:3)
简而言之,除非iframe在同一个域/子域上有源URL,否则检查它是否已完全加载,或者期望从帧传播到父窗口的任何类型的事件是不可能的。
相同的域名政策明显阻止开发人员做这些事情。
虽然有一些解决方法,例如iframe中的代码可以更改其URL并使用哈希标记继续传递信息,反之亦然。
答案 2 :(得分:2)
$('#myContent').html('<iframe height="200" frameborder="0" src="www.google.com" onload="myfunc()"></iframe>');
您应该在包含IFRAME的页面中显示:
function myfunc()
{
alert('.......');
}
$('#myContent').on('load','#myIdframe',function (){alert('.....');});
因为:
来自文档:在所有浏览器中,load事件不会冒泡。 [...]这些事件不支持与委托一起使用,但是当事件处理程序直接附加到生成事件的元素时,可以使用它们。
继承人2个例子:
1个工作,1个不工作
答案 3 :(得分:1)
创建元素,然后附加加载事件:
var frame = $('<iframe height="200" frameborder="0" src=http://www.google.com />');
$('body').append(frame);
frame.load(function(){
alert('loaded');
});
小提琴: