gpt4 book ai didi

javascript - onload 需要在解析时识别函数吗?

转载 作者:行者123 更新时间:2023-11-28 01:50:28 26 4
gpt4 key购买 nike

我有这个 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>

这很奇怪,因为加载有一点延迟发生,而且 - 当不使用 iframe 但使用 onclick 事件时并不重要:

输入工作示例

 <input onclick='aaa()' />
<script>
window.aaa= function ()
{
alert('load');

}

</script>


另外 - 在 iframe 示例中 - : aaa翻译为:

enter image description here

即便如此 - 它实际上并不需要知道 aaa在解析时。 - 因为有包装功能。

注意:iframe 的加载事件用于加载页面,而不是创建元素。

所以 - 当它解析 iframe 时- 它开始异步加载 iframe - 不会阻塞,然后立即转到 aaa 的脚本部分已声明。

我错过了什么(我在寻找原因 - 而不是解决方案)。 ?如果我调用 onload 或 onclick 有什么区别?

看起来 iframe onload需要在解析时使用该函数。 (而不是在运行时 - 当事件实际发生时。)

最佳答案

iframe 元素未定义为 EMPTY。 (元素的内容是在不支持或禁用 iframe 的情况下要呈现的内容)。因此,您不能使用 XML 空元素语法来表示 iframe。您需要一个明确的结束标记。

您正在提供脚本元素作为替代内容。如果渲染了 iframe,则替代内容将被忽略,因此脚本将不会被执行,并且该函数永远不会被添加到 JS 环境中。

使用<iframe></iframe>而不是<iframe />your non-working example is fixed .

关于javascript - onload 需要在解析时识别函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com