一尘不染

捕获iframe周围的div点击

javascript

如何捕获iframe周围的div上的click或mousedown事件。我尝试将函数附加到div上的click事件,但是由于iframe从未将事件泡到周围的div上,因此永远不会调用该函数。有没有一种方法可以捕获div上的事件,然后将其传播到iframe进行默认操作?


阅读 328

收藏
2020-05-01

共1个答案

一尘不染

如果点击在iframe区域中,则iframe上下文会处理click事件,它不会冒泡到iframe父级。因此,如果div事件发生在iframe区域中,则div根本不会注册它。

此外,如果iframe包含与iframe父级不属于同一域的页面,则将禁止任何交互(相同的原始策略)。

当满足相同的原始政策时,您可以做一些事情,您可以在iframe父上下文中调用一个方法:

top.parentFunction();

因此,在iframe中,您添加了一个事件侦听器,该事件侦听器委托给iframe父对象(可通过top引用进行访问)。

传播事件要复杂得多,因此我只想参考DiegoPerini的NWEvents库。我相信他的活动系统将是目前最好的活动系统之一,并且他特别关注iframe互动。

我当然不会开始编写自己的代码来实现这一目标,如果您想正确地完成它,这可能很容易进行为期一年的项目,即使这样也将不如Diego的工作。

2020-05-01