【发布时间】:2012-11-12 20:27:47
【问题描述】:
我有一个在站点上运行的 iframe(具有不同的域)。我能否在 iframe 中知道它对用户是否可行,或者该 iframe “居住”的页面是否处于活动状态。 谢谢。
【问题讨论】:
-
您可以检查 iframe 是否可点击。例如,如果该像素不可见,
document.elementFromPoint(0,0)将返回null。虽然如果 iframe 仅从屏幕上滚动,它也会返回null... -
这听起来像是一个很好的方向,但是 document.elementFromPoint(0,0) 在我检查的所有场景中都会返回 标记(iframe 被划掉,页面不是;t重点,..),你能更具体一点吗?
-
我在 IE9、FF、Chrome 和 Opera 中进行了快速测试,并且仅在框架页面中触发
window.onload时使用了display: none/block。 IE 和 Chrome 完全符合我的预期 (null/HTMLElement)。 FF 在none时出错,只有Opera 总是返回HTMLElement。不幸的是,我只能在本地测试跨域。我没有测试滚动,这是基于我之前对elementFromPoint()的经验的猜测。请注意,此检查应在iframe中完成,而不是在任何主页中。 -
看来我浪费了你的时间,抱歉。这实际上只在 IE 中可靠。其他浏览器似乎可以找到该元素,即使它不在屏幕上,也可以在设置
visibility:hidden时找到。而 Opera,它总能找到元素 :(。在 developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint 中描述了与 IE 相同的行为,但显然这不是真的。
标签: javascript iframe cross-domain