Javascript 如何抓取一些鼠标事件,将其他事件发送到iframe?

Javascript 如何抓取一些鼠标事件,将其他事件发送到iframe?,javascript,dom,iframe,Javascript,Dom,Iframe,我需要捕获某些用户事件(即双击),但让其余的传递到下面的iframe。这些事件中的一些可能会随着时间的推移而启用/禁用。我也不想阻止iframe接收简单的事件,比如click或scroll。然而,iframe似乎在冒泡事件(有意义)和捕获(这没有意义,因为它违反了传播顺序)上都有DIB 防止iframe窃取所有事件的唯一方法似乎是在其上方放置一个不可见的div。但是,在这种情况下,我需要为所有事件编写处理程序,以创建一个到iframe的假直通,因为即使div没有捕获的事件也不会再到达iframe

我需要捕获某些用户事件(即双击),但让其余的传递到下面的iframe。这些事件中的一些可能会随着时间的推移而启用/禁用。我也不想阻止iframe接收简单的事件,比如click或scroll。然而,iframe似乎在冒泡事件(有意义)和捕获(这没有意义,因为它违反了传播顺序)上都有DIB

防止iframe窃取所有事件的唯一方法似乎是在其上方放置一个不可见的div。但是,在这种情况下,我需要为所有事件编写处理程序,以创建一个到iframe的假直通,因为即使div没有捕获的事件也不会再到达iframe

我认为这种方法存在以下潜在问题:

  • 我可能无法将点击事件传递/模拟到外部iframe中(大多数iframe将通过srcdoc生成,因此它们是本地的,但有些可能通过src引用外部位置)
  • 我需要为几乎每个鼠标事件编写处理程序来模拟传递
  • 将事件发送到iframe本身并让它解析坐标,而不是检测iframe中的哪个元素应该接收事件,这可能会有问题
我的假设可能是错误的,所以请随时纠正我

我使用的另一种方法是检测iframe何时获得焦点:

函数clickListener(){
变量监视器=设置间隔(函数(){
var elem=document.activeElement;
if(elem&&elem.tagName=='IFRAME'){
message.innerHTML='单击';
setInterval(函数(){
message.innerHTML='';
}, 100);
清除间隔(监视器);
模糊元素();
单击侦听器();
}
}, 100);
}
单击侦听器()
iframe{
宽度:500px;
高度:300px;
}

您可以动态检查单击坐标,并查看它们是否与您的iframe匹配。如果有,则双击iframe,否则,让其他元素处理事件

document.addEventListener("dblclick", check);

    function check(event) {

            if(document.elementFromPoint(event.clientX, event.clientY).id == "message") {
    alert('iframe clicked');
        } else {
          alert('something else dude');
        }
    }
显然,请停止iframe接收任何单击:

iframe {
pointer-events: none;
}

这里有一个问题:

如果我在iframe上禁用指针事件,我将如何在iframe本身中捕获悬停、滚动和其他事件?我的想法是,我没有明确捕获的任何内容仍将进入iframe。