Помогите мне переориентировать ModalPopup внутри iframe при прокрутке родительского окна iframe

StackOverflow https://stackoverflow.com/questions/812876

Вопрос

У меня есть веб-страница с iframe на ней (мне это не нравится, но так и должно быть).Это не междоменный iframe, так что здесь не о чем беспокоиться.

Я написал расширение jQuery , которое выполняет центрирование ModalPopup (которое вызывается из переопределенного AjaxControlToolkit.Модальное пользовательское поведение._layout метод) на основе ширины и высоты родительского iframe, чтобы он выглядел центрированным, даже если iframe находится не в центре страницы.Это много сложного, тем более что веб-страница, на которую я добавил iframe, работает в режиме quirks.

Теперь я также переопределил AjaxControlToolkit.Модальное поведение пользователя._attachPopup, так что при изменении размера родительского окна или прокрутке ModalPopup внутри iframe сам изменяется относительно нового размера родительского окна.Однако тот же код, который прикрепляет всплывающее окно к родительскому окну изменить размер событие НЕ работает для родительского окна прокрутите событие.Смотрите приведенный ниже код и комментарии:

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

Кто-нибудь может мне объяснить, почему событие изменения размера работает, а событие прокрутки - нет?Есть какие-нибудь предложения или альтернативы, которые могли бы мне помочь?Я работаю с jQuery, поэтому, если я могу использовать что-то помимо метода $ AddHandler из MS, это было бы прекрасно.Имейте в виду, что мне также приходится переопределять функцию _detachPopup, чтобы удалить обработчик, поэтому мне нужно принять это во внимание.

Спасибо!

Это было полезно?

Решение

Неважно, режим причуд снова укусил меня.Получение позиции scrollTop от родительского элемента завершилось неудачей, потому что его documentElement не существовал.Я переключился

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

Для

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

в моем коде центрирования расширения jQuery, и теперь он доволен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top