加载jquery附加的iframe后,我可以调用一个函数吗?

时间:2012-02-27 14:24:01

标签: javascript jquery html iframe

这是我的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没有抓住谷歌页面:))

4 个答案:

答案 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个不工作

http://jsbin.com/emuzop/2/edit#javascript,html

http://jsbin.com/emuzop/3/edit#javascript,html

答案 3 :(得分:1)

创建元素,然后附加加载事件:

var frame = $('<iframe height="200" frameborder="0" src=http://www.google.com />');

$('body').append(frame);
frame.load(function(){
    alert('loaded');
});

小提琴:

http://jsfiddle.net/x7EXa/