|
|
|
| Доброго вреиени суточек!
Возникла проблема размещения скрытого блока <DIV> по центру экрана
function showCalendar(){
currDate=new Date();
Year=currDate.getYear();
GetCalendar(Year);
oDiv=document.getElementById('Calendar');
oDiv.style.display = 'block';
oDiv.style.left=((screen.width-oDiv.offsetWidth)/2-(document.all?screenLeft:screenX)+document.body.scrollLeft+30)+'px';
oDiv.style.top= ((screen.height-oDiv.offsetHeight)/2-(document.all?screenTop:screenY)+document.body.scrollTop+30)+'px';
return false;
}
|
Функция GetCalendar(Year) выполняет запрос и построение календаря через AJAX. Все прекрасно работает кроме одного, календарь при первом нажатии выводится не по центру.
Опытным путем выяснил, что все дело в том, что блоку <DIV> присваеваются координаты еще до завершения выполнения функции GetCalendar(Year).
проверял проблему так:
function showCalendar(){
currDate=new Date();
Year=currDate.getYear();
GetCalendar(Year);
oDiv=document.getElementById('Calendar');
oDiv.style.display = 'block';
oDiv.style.left=((screen.width-oDiv.offsetWidth)/2-(document.all?screenLeft:screenX)+document.body.scrollLeft+30)+'px';
oDiv.style.top= ((screen.height-oDiv.offsetHeight)/2-(document.all?screenTop:screenY)+document.body.scrollTop+30)+'px';
return false;
alert(oDiv.offsetHeight);
alert(oDiv.offsetHeight);
}
|
Первый раз alert выводит значение ширины DIV 19, второй раз 503. Вот такие траблы :(
Есть у кого какие варианты решения данной проблемы? | |
|
|
|
|
|
|
|
для: DIM@
(05.07.2008 в 06:09)
| | Вы не даёте времени парсеру на обработку полученной информации - отсюда и траблы.
----
Во-первых, задайте DIV'у начальный стиль visibility: hidden. Незачем юзеру наблюдать за процессом наполнения страницы.
Во-вторых, ограничьте функцию showCalendar () вызовом функции GetCalendar (Year).
В-третьих, в конце функции GetCalendar () пропишите вызов дополнительной функции, причём ОБЯЗАТЕЛЬНО вызывайте её через таймаут, пусть даже и нулевой, например, так: setTimeoyt (finalCalendar, 0).
Ну и, наконец, в функции finalCalendar () прописывайте новые размеры DIV'a - то, что у вас сейчас после вызова функции GetCalendar (Year) и не забудьте в самом конце этой функции сделать DIV видимым - style.visibility = 'visible'; | |
|
|
|