Javascript 在加载jquery附加的iframe之后,我可以调用函数吗?

Javascript 在加载jquery附加的iframe之后,我可以调用函数吗?,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,这是我的: ​​ $('#myContent').html('');​ 我想,当框架中的整个页面完全加载时,调用一个函数,比如alert(“我完成了”) 我怎么做 p.S.不知道为什么JSFIDLE没有抓到google页面:) 编辑:以下操作将不起作用。 自: 从文档中可以看出:在所有浏览器中,加载事件都不会冒泡。[…]此类事件不支持与委派一起使用,但当事件处理程序直接附加到生成事件的元素时,可以使用它们 这里有两个例子: 一个工作,一个不工作 您可以通过事件执行此操作(有关更多信息,请查看

这是我的:

​​
$('#myContent').html('');​
我想,当框架中的整个页面完全加载时,调用一个函数,比如
alert(“我完成了”)

我怎么做

p.S.不知道为什么JSFIDLE没有抓到google页面:)

编辑:以下操作将不起作用。 自:

从文档中可以看出:在所有浏览器中,加载事件都不会冒泡。[…]此类事件不支持与委派一起使用,但当事件处理程序直接附加到生成事件的元素时,可以使用它们

这里有两个例子:

一个工作,一个不工作


您可以通过事件执行此操作(有关更多信息,请查看api)

例如:

$('#myContent').html('');
$('#winId').load(函数(){alert('load')})

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

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

$('body').append(frame);
frame.load(function(){
    alert('loaded');
});
var frame=$('');
$('body')。追加(框架);
frame.load(函数(){
警报(“已加载”);
});
小提琴:


简而言之,除非iframe在同一域/子域上有源url,否则无法检查它是否已完全加载,或期待任何类型的事件从帧传播到父窗口

同样的域策略显然阻止了开发人员做这些事情


尽管有一些解决方法,例如iframe中的代码可以更改其url,并使用哈希标记不断传递信息,反之亦然。

您应该使用load,而不是ready!这是不同的!“加载”是指完全加载时<代码>就绪
用于当前页面。它完全忽略了您传入的选择器(如果您不相信我,请查看该选项)
$('#winId').ready(function(){…})
$().ready(function(){…})
$(function(){…})
相同。它不会将事件处理程序附加到iframe。@FelixKling您是对的。我没有注意到选择器被忽略。我已经编辑了我的答案。JSFiddle需要http://在文档中的源URL上:在所有浏览器中,
load
事件都不会冒泡。[…]此类事件不支持与委托一起使用,但当事件处理程序直接连接到生成事件的元素时,可以使用它们。
$(“#facebookContent”)。on不是函数
,我有jquery-1.7.1.min。js@FelixKling你说得对,你似乎不工作,但实际上,最好的策略是在我的页面上写(用iframe调用的页面)$(window.load(function(){alert(“ciao”);});(是的,我可以控制页面:))
$('#myContent').html('<iframe height="200" frameborder="0" src="www.google.com" onload="myfunc()"></iframe>');
 function myfunc()
    {
       alert('.......');
    }
 $('#myContent').on('load','#myIdframe',function (){alert('.....');});
$('#myContent').html('<iframe id="winId" height="200" frameborder="0" src="www.google.com"></iframe>');

$('#winId').load(function() {alert('loaded')})
var frame = $('<iframe height="200" frameborder="0" src=http://www.google.com />');

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