iframe窃取鼠标事件

时间:2012-03-29 15:52:21

标签: javascript html css internet-explorer firefox

我在网站上使用Javascript卷轴类,无缝地将滚动条添加到页面上具有溢出内容的所有预定义元素。客户端最近要求其中一个元素包含iframe,以便他们可以轻松地向此区域添加交互式内容。 (我知道我知道,iframe,但我是这项工作的分包商。没有太大的吸引力。)幸运的是,iFram的内容是从同一个域中提取的,所以我可以在内容加载后重新调整iframe的大小,反过来触发Javascript滚动条。最后,它在Chrome中运行得很漂亮。

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

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

以下是适合衡量标准的Scroll类:http://hastebin.com/xisidogiju.coffee

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

2 个答案:

答案 0 :(得分:1)

鼠标事件与窗口绑定,iframe是窗口。如你所说,这是一个奇迹,它可以在webkit浏览器中使用。

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

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

答案 1 :(得分:0)

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

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

在这里,我创建了一个事件来收听鼠标滚动并将事件绑定到iframe。

然后,您可以使用scrollTop属性滚动父窗口或元素,如

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

这仅在您访问的iframe位于同一域时才有效。

相关问题