Ajude-me a re-centrar a ModalPopup dentro de um iframe quando rola janela pai do iframe
-
03-07-2019 - |
Pergunta
Eu tenho uma página web com um iframe nele (eu não gosto disso, mas essa é a maneira que tem que ser). Não é um iframe entre domínios então não há nada para se preocupar lá.
Eu escrevi uma extensão jQuery que faz a centralização de um ModalPopup (que é chamado de um sobrescrito AjaxControlToolkit.ModalPopupBehavior._layout método) com base na largura e altura do pai do iframe, de modo que Parece centrado mesmo que o iframe não está no centro da página. É um monte de coisas complicadas, especialmente desde que a página web eu adicionei o iframe para corridas em quirks mode.
Agora, eu também tenho substituído AjaxControlToolkit.ModalPopupBehavior._attachPopup , de modo que quando os redimensiona a janela pai ou pergaminhos, dentro ModalPopup do recenter iframe é em si em relação ao novo tamanho da janela pai . No entanto, o mesmo código que atribui o pop-up para da janela pai redimensionamento evento não funciona para da janela pai rolagem evento. Veja o código abaixo, e os comentários:
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;
}
Alguém pode me explicar por que o evento de redimensionamento funciona enquanto o evento de rolagem não? Todas as sugestões ou alternativas lá fora para me ajudar? Eu estou trabalhando com jQuery, por isso, se eu posso usar algo além do método $ addHandler de MS que estaria bem. Esteja ciente de que eu também tenho que substituir a função _detachPopup para remover o manipulador, então eu preciso levar isso em conta.
Obrigado!
Solução
Não importa, o modo de peculiaridades me mordeu novamente. Obtendo a posição scrollTop do pai estava falhando porque é documentElement não existia. Troquei
$(top.window.document.documentElement).scrollTop();
para
$(top.window.document.body).scrollTop();
no meu código de centralização extensão jQuery e é feliz agora.