jQuery可以绑定到iframe的onload事件吗?

时间:2011-10-26 08:02:07

标签: javascript jquery iframe onload

我知道jQuery无法绑定到文件输入的onchange事件。它是否也无法绑定到inframe的onload事件?

使用此HTML,

<iframe src="http://jsfiddle.net" onload="alert('js alert');"></iframe>

和这个javascript,

$("iframe").live("onload",function(){alert('jq alert');});

我收到提醒js alert,而不是jq alert,因此jQuery没有绑定到onload事件。

Demo on JSFiddle

我无法理解为什么jQuery无法及时绑定到onload事件(如ThiefMaster said)。 onload与其他事件有什么不同?

2 个答案:

答案 0 :(得分:3)

事件已经在注册事件处理程序时触发。如果您需要处理onload事件并希望避免丑陋的内联事件处理程序,请通过jQuery创建iframe并在设置url或将其附加到文档之前附加事件处理程序。

答案 1 :(得分:0)

在您的代码中,您无法捕获onload事件,因为该事件已经被触发并在那时飞走了。

这是一个捕捉事件的解决方案:

HTML

<iframe src=""></iframe>

JS

$(document).ready(function() {
  $("iframe").load(function() { alert('load complete'); });
  $("iframe").error(function() { alert('error occurs'); });
  $("iframe").attr("src", "http://google.com");
});

当您提供src时,会触发加载/错误事件。因此,在提供src之前,绑定要处理的事件。

您也可以将此技巧用于<img>