Question

J'ai une page Web avec un iframe (je ne l'aime pas, mais c'est comme ça que ça doit être). Ce n’est pas une iframe interdomaine, il n’ya donc rien à craindre.

J'ai écrit une extension jQuery qui permet de centrer une méthode ModalPopup (appelée à partir d'une AjaxControlToolkit.ModalPopupBehavior._layout remplacée] en fonction de la largeur et de la hauteur du parent de l'iframe, de sorte que il semble centré même si l'iframe n'est pas au centre de la page. C'est très compliqué, surtout depuis que la page Web à laquelle j'ai ajouté l'iframe s'exécute en mode quirks.

Maintenant, j'ai également remplacé AjaxControlToolkit.ModalPopupBehavior._attachPopup , de sorte que, lorsque la fenêtre parent redimensionne ou défile, la taille ModalPopup à l'intérieur de l'iframe recenter lui-même par rapport à la nouvelle taille de la fenêtre parent . Toutefois, le même code qui associe la fenêtre contextuelle à l'événement resize de la fenêtre parent ne fonctionne PAS pour l'événement scroll de la fenêtre mère. Voir le code ci-dessous et les commentaires:

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

Quelqu'un peut-il m'expliquer pourquoi l'événement de redimensionnement fonctionne alors que l'événement de défilement ne fonctionne pas? Avez-vous des suggestions ou des alternatives pour m'aider? Je travaille avec jQuery, donc si je peux utiliser quelque chose en plus de la méthode $ addHandler de MS, ça ira. Sachez que je dois également remplacer la fonction _detachPopup pour supprimer le gestionnaire, je dois donc en tenir compte.

Merci!

Était-ce utile?

La solution

Tant pis, le mode quirks m'a encore mordu. L'obtention de la position scrollTop auprès du parent échouait car documentElement n'existait pas. Je suis passé

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

à

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

dans mon code de centrage d'extension jQuery et il est heureux maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top