1

iframeを含むWebページを持っています(私はそれが好きではありませんが、そうでなければなりません)。それはクロスドメインiframeではないので、そこに心配することはありません。それも中心に見えるようにiframeの親ウィンドウがスクロールするときに、iframe内でModalPopupを再センタリングするのを手助けしてください。

私は、IFRAMEの親の幅と高さに基づいて(上書きAjaxControlToolkit.ModalPopupBehavior._layoutメソッドから呼び出された)ModalPopupのセンタリングを行うjQueryの拡張子を書かれていますiframeはページの中央にはありません。特にウェブページにiframeを追加してからquirksモードで動作するので、面倒なことがたくさんあります。

は今、私はまた、AjaxControlToolkit.ModalPopupBehavior._attachPopup、親ウィンドウのサイズが変更またはスクロールするように、IFRAME recenterはの自身の親ウィンドウの新しいサイズに比べて内部ModalPopupをオーバーライドしてきました。ただし、親ウィンドウのサイズ変更イベントにポップアップを添付する同じコードは、親ウィンドウのスクロールイベントでは機能しません。以下のコードとコメントを参照してください:

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

スクロールイベントが発生していない間、resizeイベントはなぜ機能するのですか?私に手伝ってくれる提案や選択肢がありますか?私はjQueryを使っているので、MSの$ addHandlerメソッドのほかに何かを使うことができればうまくいくはずです。ハンドラを削除するには、_detachPopup関数をオーバーライドする必要があるので、考慮する必要があります。

ありがとうございます!

答えて

1

もう一度やり直してください。親からscrollTop位置を取得するのは、documentElementが存在しなかったために失敗していました。私はjQueryの拡張子を中心コードに

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

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

を切り替え、それは今幸せです。

関連する問題