我有这个 iframe :
<iframe src='http://jsbin.com/iyaVOSe/1' onload='aaa()' id='ifr'/>
但是只有在 iframe 之前声明了函数时, onload 才有效:
工作:(http://jsbin.com/ObeQERE/3/edit)
<script>
window.aaa= function ()
{
alert('load');
}
</script>
<iframe src='http://jsbin.com/iyaVOSe/1' onload='aaa()' id='ifr'/>
不工作:( 未定义aaa
)(http://jsbin.com/ObeQERE/4/edit)
<iframe src='http://jsbin.com/iyaVOSe/1' onload='aaa()' id='ifr'/>
<script>
window.aaa= function ()
{
alert('load');
}
</script>
这很奇怪,因为 onload 发生了一些延迟,而且 - 不使用 iframe 而使用 onclick 事件也没关系:
输入工作示例
<input onclick='aaa()' />
<script>
window.aaa= function ()
{
alert('load');
}
</script>
此外 - 在 iframe 示例中 - :aaa
被翻译为:
即便如此 - 它在解析时并不需要知道aaa
。- 因为有一个包装功能。
注意:iframe 的加载事件是为了加载页面而不是创建元素。
所以 - 当它解析时iframe
- 它开始异步加载 iframe - 不会阻塞,然后它立即进入aaa
声明的脚本部分。
我错过了什么(我在寻找一个原因 - 不是解决方案)。? 如果我调用 onload 或 onclick 有什么区别?
看起来 iframeonload
在解析时需要该函数。(而不是在运行时 - 当事件实际发生时。)