【发布时间】:2010-10-19 13:58:46
【问题描述】:
我正在尝试检测 iframe 及其内容何时加载但运气不佳。我的应用程序在父窗口的文本字段中输入一些内容并更新 iframe 以提供“实时预览”
我开始使用以下代码 (YUI) 来检测 iframe 加载事件何时发生。
$E.on('preview-pane', 'load', function(){
previewBody = $('preview-pane').contentWindow.document.getElementsByTagName('body')[0];
}
'preview-pane' 是我的 iframe 的 ID,我正在使用 YUI 来附加事件处理程序。但是,尝试在我的回调中访问正文(在 iframe 加载时)失败,我认为是因为 iframe 在事件处理程序准备好之前加载。如果我通过使生成它的 php 脚本休眠来延迟 iframe 加载,则此代码有效。
基本上,我问的是跨浏览器检测 iframe 何时加载且其文档何时准备就绪的正确方法是什么?
【问题讨论】:
-
从 YUI 开始是个坏主意(以及任何其他 JS 库)。为什么?因为你不知道图书馆在做什么魔法。如果他们不能完全支持“加载”,你最好用清晰易读的javascript自己做。
-
您可以经常阅读库@Christian 的源代码。我发现无论您是否使用它们的实现,这通常都会为您提供如何自己做的很好的提示。
-
@AJP 你误解了我的意思。如果你正在做一些你不确定的事情,最好少写一些代码,这样出错的空间就会更小。
-
取决于你如何看待它。我知道当时 YUI 的事件处理是有效的,所以我不必担心那部分代码。我也知道如何编写自己的 addEvent 处理程序,但在这个问题上它的效果并不比 YUI 好。
-
@Nico 问题指的是 YUI,$ 是 YUI 的 Dom 包装器的别名。
标签: javascript events cross-browser