Helfen Sie mir wieder in den Mittelpunkt eines ModalPopup in einem Iframe, wenn das übergeordnete Fenster des iframe scrollt

StackOverflow https://stackoverflow.com/questions/812876

Frage

Ich habe eine Webseite mit einem Iframe drin (ich es nicht mögen, aber das ist so, wie es sein muss). Es ist kein Cross-Domain-iframe so gibt es nichts über sich Sorgen zu machen.

Ich habe eine jQuery Erweiterung geschrieben, dass das Zentrieren eines ModalPopup tut basierend auf der Breite und Höhe des iframe der Eltern (die von einem überschriebenen AjaxControlToolkit.ModalPopupBehavior._layout Verfahren genannt wird), so dass sieht es aus, obwohl die iframe ist nicht in der Mitte der Seite zentriert. Es ist eine Menge kniffliger Sachen, vor allem, da der Web-Seite ich den Iframe läuft im Quirks-Modus hinzugefügt.

Jetzt habe ich auch außer Kraft gesetzt AjaxControlToolkit.ModalPopupBehavior._attachPopup , so dass, wenn das übergeordnete Fenster ändert die Größe oder Schriftrollen, die ModalPopup innerhalb des iframe recenter die sich in Bezug auf die neue Größe des übergeordneten Fensters . Allerdings ist der gleiche Code, der das Popup das übergeordnete Fenster legt Resize Veranstaltung funktioniert nicht für das übergeordnete Fenster des Blättern Veranstaltung. Sehen Sie den Code unten, und die Kommentare:

AjaxControlToolkit.ModalPopupBehavior.prototype._attachPopup = function() {
    /// <summary>
    /// Attach the event handlers for the popup to the PARENT window
    /// </summary>
    if (this._DropShadow && !this._dropShadowBehavior) {
        this._dropShadowBehavior = $create(AjaxControlToolkit.DropShadowBehavior, {}, null, null, this._popupElement);
    }
    if (this._dragHandleElement && !this._dragBehavior) {
        this._dragBehavior = $create(AjaxControlToolkit.FloatingBehavior, {"handle" : this._dragHandleElement}, null, null, this._foregroundElement);
    }        
    $addHandler(parent.window, 'resize', this._resizeHandler); // <== This WORKS
    $addHandler(parent.window, 'scroll', this._scrollHandler); // <== This DOES NOT work
    this._windowHandlersAttached = true;
}

Kann jemand mir erklären, warum das Resize-Ereignis arbeitet, während das Scroll-Ereignis nicht der Fall ist? Irgendwelche Vorschläge oder Alternativen da draußen helfen Sie mir? Ich arbeite mit jQuery, also wenn ich etwas anderes als die $ addHandler Methode von MS verwenden kann, die in Ordnung sein würden. Beachten Sie, dass ich auch die _detachPopup Funktion außer Kraft setzen den Handler zu entfernen, so muss ich, dass berücksichtigen.

Danke!

War es hilfreich?

Lösung

Nevermind, Quirksmodus biss mich wieder. die scrollTop Position von der Mutter immer versagt, weil es document gibt es nicht. Ich schaltete

$(top.window.document.documentElement).scrollTop();

$(top.window.document.body).scrollTop();

in meinem jQuery-Erweiterung Zent Code und es ist jetzt glücklich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top