Helfen Sie mir wieder in den Mittelpunkt eines ModalPopup in einem Iframe, wenn das übergeordnete Fenster des iframe scrollt
-
03-07-2019 - |
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!
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.