【发布时间】:2013-11-04 23:16:59
【问题描述】:
我有这个 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 有什么区别?
看起来 iframe onload 在解析时需要该函数。 (而不是在运行时 - 事件实际发生时。)
【问题讨论】:
标签: javascript html