Aiutami a ricentrare un ModalPopup all'interno di un iframe quando scorre la finestra principale dell'iframe
-
03-07-2019 - |
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!
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.