2012-03-29 13 views
0

Ich benutze eine Javascript Scroller-Klasse auf einer Website, die sich nahtlos um das Hinzufügen einer Bildlaufleiste zu allen vordefinierten Elementen auf der Seite kümmert, die Inhalt überflogen haben. Der Client hat kürzlich gefragt, ob eines dieser Elemente einen Iframe enthält, so dass sie problemlos interaktiven Inhalt zu diesem Bereich hinzufügen können. (Ich weiß, ich weiß, iframes, aber ich bin ein Subunternehmer in diesem Job. Nicht viel ziehen.) Zum Glück der Inhalt der iFram wird aus der gleichen Domäne gezogen, so kann ich die Größe des Iframe, sobald der Inhalt lädt und feuert die Javascript Scrollbar ab. Am Ende funktioniert es wunderbar - in Chrome.Iframe stehlen Mausereignisse

In Explorer und Firefox scheint der Iframe Mausereignisse zu stehlen, sobald sich die Maus über dem Iframe befindet. Das Mausrad-Ereignis funktioniert also nicht mehr. Sie können den Bildlaufgriff immer noch ziehen, um zu blättern, oder auf eine beliebige Stelle auf dem Bildlauf-Track klicken, aber das Mausrad macht nichts. Es feuert nicht einmal das Ereignis.

Ich habe gesehen, dass andere ähnliche Probleme hatten, aber keine Problemumgehung gefunden haben. Hat jemand irgendwelche Vorschläge?

Hier ist die Scroll-Klasse für eine gute Maßnahme: http://hastebin.com/xisidogiju.coffee

jede Hilfe dankbar ich bekommen kann!

+0

netter Link, lol. Zerfallende Pastebins sind die besten. – RaisingAgent

Antwort

1

Mausereignisse sind an Fenster gebunden, Iframes sind Fenster. Es ist ein Wunder, dass dies in Webkit-Browsern funktioniert, wie Sie sagen.

Sie müssen den eventListener und vielleicht eventHandler zwischen dem übergeordneten Fenster und den Iframes übergeben, wenn die Maus in sie hineingeht.

Eine Referenz zum Übergeben von Objekten zwischen Iframes: http://www.dyn-web.com/tutorials/iframes/refs.php.

0

Ich könnte nur schaffen, dieses Problem zu überwinden. Sie können die in der unten genannten Datei genannte Lösung überprüfen.

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

Hier habe ich eine Veranstaltung geschaffen, um die Maus blättern zu hören und haben das Ereignis an den iframe binded.

Sie können dann scrollen Sie das übergeordnete Fenster oder Element durch die scrollTop Eigenschaft verwenden wie

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

Dies funktioniert nur, wenn der iframe Sie Zugriff auf in der gleichen Domäne ist.

Verwandte Themen