Iframe窃取鼠标事件

Iframe stealing mouse events

本文关键字:事件 鼠标 Iframe      更新时间:2023-09-26

我在一个网站上使用Javascript滚动器类,该类可以无缝地为页面上所有溢出内容的预定义元素添加滚动条。客户最近要求其中一个元素包含iframe,以便他们可以轻松地将交互式内容添加到该区域。(我知道我知道,iframes,但我是这份工作的分包商。没有太大的吸引力。)幸运的是,iFram的内容是从同一个域中提取的,所以一旦内容加载,我就可以调整iframe的大小,进而启动Javascript滚动条。最终,它在Chrome中运行得很好。

在Explorer和Firefox中,只要鼠标在iframe上,iframe似乎就会窃取鼠标事件。因此mousewheel事件不再工作。您仍然可以拖动滚动手柄进行滚动,或者单击滚动轨迹上的任何位置,但使用鼠标滚轮不会有任何作用。它甚至没有启动活动。

我看到其他人也遇到过类似的问题,但还没有找到解决办法。有人有什么建议吗?

以下是Scroll类:http://hastebin.com/xisidogiju.coffee

感谢我能得到的任何帮助!

鼠标事件绑定到窗口,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在同一域中时,这才会起作用。