捕获围绕iframe的div点击>>

问题描述 投票:16回答:3

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

我如何捕获iframe周围的div上的click或mousedown事件。我尝试将函数附加到div上的click事件,但是由于iframe从未将事件冒泡到......>

javascript event-handling dom-events event-bubbling
3个回答
11
投票

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

此外,如果iframe包含与iframe父级不属于同一域的页面,则禁止任何交互(例如same origin policy。]]

当满足same origin policy时,您可以做一些事情,您可以在iframe父上下文中调用一个方法:


6
投票

没有做到这一点的“好”方法,但是,如果您确实需要检测对iframe的点击,则可以在最新的浏览器中进行。

<iframe src="http://mtw-ed.com/" id="iframe" style=""></iframe>

<script type="text/javascript">
var inIframe = false;
function checkClick() {
    if (document.activeElement 
      && document.activeElement === document.getElementById("iframe")) {
        if (inIframe == false) {
            alert("iframe click");
            inIframe = true;
        }
    } else
        inIframe = false;
}
setInterval(checkClick, 200);
</script>

0
投票

您可以使用porthole之类的库在父级和iframe之间甚至跨域之间传递消息。使用此方法不能完全传播事件(您将无法获得事件对象),但是可以以简单消​​息的形式创建自己的事件,然后单击即可在父级中处理它。

Here's their example

© www.soinside.com 2019 - 2024. All rights reserved.