Ayúdame a volver a centrar un ModalPopup dentro de un iframe cuando la ventana primaria del iframe se desplaza

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

Pregunta

Tengo una página web con un iframe (no me gusta, pero así es como debe ser). No es un iframe de dominio cruzado, por lo que no hay nada de qué preocuparse.

He escrito una extensión jQuery que hace el centrado de un ModalPopup (que se llama desde un método AjaxControlToolkit.ModalPopupBehavior._layout invalidado) basado en el ancho y la altura del padre del iframe, por lo que se ve centrado aunque el iframe no está en el centro de la página. Es un montón de cosas complicadas, especialmente desde que la página web a la que agregué el iframe se ejecuta en modo peculiaridades.

Ahora, también he anulado AjaxControlToolkit.ModalPopupBehavior._attachPopup , de modo que cuando la ventana primaria cambie de tamaño o se desplace, la ventana emergente ModalPopup dentro del marco del iframe se relaciona con el nuevo tamaño de la ventana principal . Sin embargo, el mismo código que adjunta la ventana emergente al evento redize de la ventana principal NO funciona para el evento scroll de la ventana principal. Vea el código a continuación y los comentarios:

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;
}

¿Puede alguien explicarme por qué el evento de cambio de tamaño funciona mientras que el evento de desplazamiento no lo hace? ¿Alguna sugerencia o alternativa por ahí para ayudarme? Estoy trabajando con jQuery, así que si puedo usar algo además del método $ addHandler de MS, estaría bien. Tenga en cuenta que también tengo que anular la función _detachPopup para eliminar el controlador, por lo que debo tenerlo en cuenta.

¡Gracias!

¿Fue útil?

Solución

No importa, el modo de caprichos me mordió de nuevo. La obtención de la posición scrollTop del padre estaba fallando porque no existía DocumentElement. Cambié

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

a

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

en mi código de centrado de la extensión de jQuery y está feliz ahora.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top