2012-03-29 131 views
0

我在一個網站上使用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

回答

1

鼠標事件綁定到窗口,iframe是窗口。正如你所說,這是一個奇蹟,它在webkit瀏覽器中起作用。

當鼠標移動到父窗口和iframe之間時,您需要傳遞eventListener和eventHandler。

關於在iframe之間傳遞對象的一些引用:http://www.dyn-web.com/tutorials/iframes/refs.php

0

我可以設法解決這個問題。你可以檢查下面提到的jsfiddle中提到的解決方案。

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

在這裏,我創建了一個事件監聽到鼠標的滾動,並綁定該事件的iframe。

然後,您可以通過使用scrollTop的屬性滾動父窗口或元素像

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

這時候您正在訪問的iframe是在同一個域中才有效。