Iframe窃取鼠标事件

问题描述:

我在一个网站上使用Javascript滚动类,无缝地照顾添加一个滚动条到页面上的所有预定义元素有溢出的内容。客户最近要求其中一个元素包含一个iframe,以便他们可以轻松地将交互式内容添加到该区域。 (我知道,我知道,iframe,但我是这个工作的分包商,没有太多的拉动。)幸运的是,iFram的内容是从同一个域中获取的,所以我可以在内容加载后调整iframe的大小,依次触发Javascript滚动条。最后它在Chrome中运行得非常漂亮。Iframe窃取鼠标事件

在资源管理器和Firefox中,只要鼠标悬停在iframe上,iframe似乎就是在窃取鼠标事件。所以mousewheel事件不再起作用。您仍然可以拖动滚动手柄进行滚动,或者单击滚动轨道上的任意位置,但使用滚轮不会执行任何操作。它甚至不会触发该事件。

我已经看到其他人有类似的问题,但还没有找到解决方法。任何人有任何建议?

这里的好措施滚动类:http://hastebin.com/xisidogiju.coffee

感谢所有帮助我能!

+0

不错的链接,哈哈。腐烂的pastebins是最好的。 – RaisingAgent 2017-04-21 11:15:34

鼠标事件绑定到窗口,iframe是窗口。正如你所说,这是一个奇迹,它在webkit浏览器中起作用。

当鼠标移动到父窗口和iframe之间时,您需要传递eventListener和eventHandler。

关于在iframe之间传递对象的一些引用:http://www.dyn-web.com/tutorials/iframes/refs.php

我可以设法解决这个问题。你可以检查下面提到的jsfiddle中提到的解决方案。

http://jsfiddle.net/6nnMV/358/

在这里,我创建了一个事件监听到鼠标的滚动,并绑定该事件的iframe。

然后,您可以通过使用scrollTop的属性滚动父窗口或元素像

$(element).scrollTop($(element).scrollTop+(number of pixels)); 

这时候您正在访问的iframe是在同一个域中才有效。