我正在创建一个网页,需要引入一个必不可少的Javascript库,但也可以通过修改内置类的原型来破坏其他代码。我在iframe中对其进行了沙盒化,并在两者之间建立了协作数据共享。
当iframe的body.onload触发时,我的代码将修改父文档。理论上,无论父项或子项的body.onload是否首先触发,此代码都是正确的。在实践中,我无法测试一个代码路径,因为iframe似乎总是在父代之前加载,即使我在Web服务器中注入了人为延迟。
父节点是否保证在子文档加载后才开始onload,或者这只是Firefox的一个怪癖?
如果没有,为了进行测试,如果sleep(5)
child.php
{{1}}中没有给我这个测试用例,我怎么能强迫孩子加载?
最后,当孩子Javascript修改其Javascript环境时,这是否保证与父框架分开,或者这个只是一个让它工作的Firefox的怪癖?
便携性很重要。感谢。
答案 0 :(得分:0)
如果portabilty对您很重要,那么便利也应该很重要。通过阅读你的帖子(处理iframe,sleep
等),你的整个概念听起来很笨拙和不合理。
但是,为了回答您的问题,我对document.body.onload
并不是100%肯定,但您可以确定绑定到window.onload
的任何处理程序都会在所有iframe之后触发加载,这是非常非常跨浏览器兼容。此外,iframe是一个带有自己DOM的“沙盒”环境这一事实非常跨浏览器。因此,您无需考虑父文档或其他iframe和冲突。