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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top