1

我有在它的IFRAME網頁(我不喜歡它,但這是它是的方式)。這不是一個跨域的iframe,所以沒有什麼可擔心的。幫我重新中心ModalPopup一個iframe中時iframe的父窗口滾動

我已經寫一個jQuery延伸,做了ModalPopup的基於的IFRAME父級的寬度和高度的定心(其是從重寫AjaxControlToolkit.ModalPopupBehavior._layout方法調用),以便它看起來甚至居中儘管iframe不在頁面的中心。這是一個很大的棘手的問題,特別是因爲該網頁我加入了iframe來運行怪癖模式。

現在,我也重寫AjaxControlToolkit.ModalPopupBehavior._attachPopup,這樣當父窗口調整大小或滾動時,ModalPopup的iframe recenter的本身相對於父窗口的新尺寸的內部。但是,重視彈出到父窗口的大小調整事件相同的代碼不會對父窗口的滾動事件工作。看到下面的代碼和評論:

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不存在。我切換

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

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

在我的jQuery擴展圍繞代碼和它現在是幸福的。