我如何捕获iframe周围的div上的click或mousedown事件。我尝试将函数附加到div上的click事件,但是由于iframe从未将事件泡到周围的div上,因此永远不会调用该函数。有没有一种方法可以捕获div上的事件,然后将其传播到iframe进行默认操作?
我如何捕获iframe周围的div上的click或mousedown事件。我尝试将函数附加到div上的click事件,但是由于iframe从未将事件冒泡到......>
[如果点击在iframe区域中,则iframe上下文会处理click事件,它不会冒泡到iframe父级。因此,如果div事件发生在iframe区域中,则div根本不会注册它。
此外,如果iframe包含与iframe父级不属于同一域的页面,则禁止任何交互(例如same origin policy。]]
当满足same origin policy时,您可以做一些事情,您可以在iframe父上下文中调用一个方法:
没有做到这一点的“好”方法,但是,如果您确实需要检测对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>
您可以使用porthole之类的库在父级和iframe之间甚至跨域之间传递消息。使用此方法不能完全传播事件(您将无法获得事件对象),但是可以以简单消息的形式创建自己的事件,然后单击即可在父级中处理它。