iframe加载后是否始终调用body.onload?

时间:2012-02-22 15:36:29

标签: javascript html

我正在创建一个网页,需要引入一个必不可少的Javascript库,但也可以通过修改内置类的原型来破坏其他代码。我在iframe中对其进行了沙盒化,并在两者之间建立了协作数据共享。

当iframe的body.onload触发时,我的代码将修改父文档。理论上,无论父项或子项的body.onload是否首先触发,此代码都是正确的。在实践中,我无法测试一个代码路径,因为iframe似乎总是在父代之前加载,即使我在Web服务器中注入了人为延迟。

父节点是否保证在子文档加载后才开始onload,或者这只是Firefox的一个怪癖?

如果没有,为了进行测试,如果sleep(5) child.php {{1}}中没有给我这个测试用例,我怎么能强迫孩子加载?

最后,当孩子Javascript修改其Javascript环境时,这是否保证与父框架分开,或者这个只是一个让它工作的Firefox的怪癖?

便携性很重要。感谢。

1 个答案:

答案 0 :(得分:0)

如果portabilty对您很重要,那么便利也应该很重要。通过阅读你的帖子(处理iframe,sleep等),你的整个概念听起来很笨拙和不合理。

但是,为了回答您的问题,我对document.body.onload并不是100%肯定,但您可以确定绑定到window.onload的任何处理程序都会在所有iframe之后触发加载,这是非常非常跨浏览器兼容。此外,iframe是一个带有自己DOM的“沙盒”环境这一事实非常跨浏览器。因此,您无需考虑父文档或其他iframe和冲突。