我知道onload事件在触发之前等待页面资源加载-图像、样式表等。
但是,这是否包括页面中的IFrames?换句话说,能保证所有子帧的onload总是在父帧之前触发吗?
另外,如果浏览器之间的行为不同,请让我知道。
发布于 2009-06-05 17:39:15
正如我在我的页面上看到的,每个iframe都有独立的onload,top-frame onload不会等待iframe触发。
我在我的网站上有gif/png横幅,有时加载非常慢,所以我把它们放到iframe中,这使得整个网站和onload事件工作得更快。
发布于 2009-06-05 17:45:41
如果你想做这样的事情,你需要为iframe添加一个onload处理程序。你可以用jQuery很好地做到这一点:
<iframe src="http://digg.com"></iframe>
<script>
var count = $('iframe').length;
$(function() {
// alert('loaded'); // will show you when the regular body loads
$('iframe').load(function() {
count--;
if (count == 0)
alert('all frames loaded');
});
});
</script>这将在加载所有帧时发出警报。
请参见示例:
http://jsbin.com/azilo
发布于 2010-12-31 04:09:47
或者普通的javascript应该可以工作..
function checkIframes() {
if(!i) { i = 0; }
if(document.getElementsByTagName('iframe')[i]) {
document.getElementsByTagName('iframe')[i].onload = function () { i++; checkIframes(); }
}
else { yourFunctionInHere(); }
}还没有真正测试过,但应该可以工作...然后用document.onload = function() { checkIframes(); }引用它
我真的不喜欢像jQuery这样的库,因为到目前为止,我发现用普通的javascript可以用更少的代码实现更多的功能。
https://stackoverflow.com/questions/957133
复制相似问题