【发布时间】:2016-03-05 05:08:09
【问题描述】:
我有使用 onfocus 事件的 html 应用程序。切换浏览器选项卡时效果很好。
现在,当我在另一个 html 页面中将该应用程序作为 iframe 加载时,它不起作用,因为在切换选项卡时 iframe 没有聚焦。如何从iframe 访问onfocus 事件无需修改顶级代码。
iframe 和加载 iframe 的页面不是同一来源。
if (!window.parent.frames.length) {
window.onfocus = function () {
// do smth
};
} else {
// ???
}
【问题讨论】:
-
请发布最低代码以显示其设置方式。
-
我看到 iframe 和父文档的来源不同。您是否控制两个文档/来源中的内容?
-
这是最低限度的代码。我正在做一些基于事件(套接字)的动画。它们应该是实时动画,所以我需要一个队列。切换选项卡时,应该清理队列,如果应用程序不是
iframe,它就可以工作。但是当它是iframe时,我无法清理队列,因为onfocus事件不会启动。 @Amber de Black 答案可能是我的解决方案。 -
@J.Kovacevic 试试我提供的答案,它使用
postMessage将父级onfocus事件传递给<iframe>。
标签: javascript iframe