Domanda

Ho una pagina web con un iframe (non mi piace, ma è così che deve essere). Non è un iframe interdominio quindi non c'è nulla di cui preoccuparsi lì.

Ho scritto un'estensione jQuery che esegue il centraggio di un ModalPopup (che viene chiamato da un metodo AjaxControlToolkit.ModalPopupBehavior._layout sovrascritto) in base alla larghezza e all'altezza del genitore dell'iframe, in modo che sembra centrato anche se l'iframe non è al centro della pagina. È un sacco di cose complicate, soprattutto da quando la pagina web ho aggiunto l'iframe alle esecuzioni in modalità strane.

Ora, ho anche ignorato AjaxControlToolkit.ModalPopupBehavior._attachPopup , in modo che quando la finestra principale si ridimensiona o scorre, ModalPopup all'interno del recente iframe si riferisce alla nuova dimensione della finestra padre . Tuttavia, lo stesso codice che collega il popup all'evento ridimensiona della finestra principale NON funziona per l'evento scroll della finestra principale. Vedi il codice qui sotto e i commenti:

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

Qualcuno può spiegarmi perché l'evento di ridimensionamento funziona mentre l'evento scroll no? Qualche suggerimento o alternativa là fuori per aiutarmi? Sto lavorando con jQuery, quindi se posso usare qualcosa oltre al metodo $ addHandler di MS andrebbe bene. Tieni presente che devo anche ignorare la funzione _detachPopup per rimuovere il gestore, quindi devo tenerne conto.

Grazie!

È stato utile?

Soluzione

Non importa, la modalità strane mi ha morso di nuovo. Ottenere la posizione scrollTop dal genitore non funzionava perché documentElement non esisteva. Ho cambiato

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

a

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

nel mio codice di centraggio delle estensioni jQuery ed è felice ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top