Я работаю над приложением, которое работает в iframe. IFrame довольно длинный, но никогда не имеет полосы прокрутки, но внешняя страница явно делает.
В iframe я показываю модальный диалог (один из додзе), и требуется, чтобы диалог был позиционирован как 10px из верхней части окна просмотра. Но похоже, что jquery не имеет никакой полезной функции, которая будет определять правильную позицию в отношении текущих настроек панели инструментов, поскольку (scrollTop требует, чтобы ее вызывали с помощью элемента с внешней страницы, и нет, поскольку iframe длиннее, чем область просмотра), Также невозможно использовать фиксированную позицию css, поскольку она должна быть в документе верхнего уровня.
Я также попытался использовать окно объекта поддержки Dojo, но позиционирование также не работает правильно...
Спасибо за любую помощь заранее.
Ну, вы можете добавить обработчик на родительскую страницу "onscroll". На обработчике вы можете получить верхнее положение прокрутки и отправить это значение в дочерний кадр через функцию, например:
window.onscroll = function() {
var doc = document.documentElement, body = document.body;
var top = (doc && doc.scrollTop || body && body.scrollTop || 0);
document.getElementById("IFRAME_ID").contentWindow.SetTopValue(top);
};
На дочерней стороне установите модальный div в фиксированную позицию css, а в функции javascript, которая получает родительское значение прокрутки, вы устанавливаете свойство "top" как "scrollvalue + 10". Что-то вроде этого:
function SetTopValue(top) {
document.getElementById("MODAL_DIV").style.top = (10 + top) + "px";
}