var form = document.getElementById("myform");
var DivHeight = form.offsetHeight; //получаем высоту формы
var DivWidth = form.offsetWidth; //получаем ширину формы
var browser=navigator.appName; //название браузера пользователя
//Попытка обойти баг IE6.0, который для document.body.scrollTop всегда возвращает нуль
//document.documentElement.scrollTop - а это он понимает, но уж как-то очень по своему,
//получает странно большое значение, из-за чего форма сползает далеко вниз экрана
var scrollTop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;
var scrollLeft = document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft;
//Это уже от безысходности.. Так более-менее получается отцентровать форму в видимой области
//хотя она и не выравнивается точно, особенно заметно расхождение на разных разрешениях монитора
if (browser=="Microsoft Internet Explorer") {
scrollTop = scrollTop/2;
}
//Центрируем по вертикали и горизонтали в зависимости от скроллинга и размера формы;
//работает для Opera и по великой идее должно работать для IE
form.style.top = (scrollTop + document.body.clientHeight/2 - DivHeight/2)+’px’;
form.style.left = (scrollLeft + document.body.clientWidth/2 - DivWidth/2)+’px’;
//У Firefox свои причуды, у него свои функции для получения размера окна и текущего скроллинга
if (document.getElementById && !document.all) {
form.style.top = (window.pageYOffset + window.innerHeight/2 - DivHeight/2)+’px’;
form.style.left = (window.pageXOffset + window.innerWidth/2 - DivWidth/2)+’px’;
}[/QUOTE]
В итоге все это работает как и задумывалось - в Opera 9 и Firefox 1.5.
А в IE 6.0 вследствие бага - не работает, точнее - форма уползает вниз экрана.
Перекопал кучу инфы в рунете и буржунете, нашел-таки подсказку, где искать.
Оказывается, дело в том, что IE 6.0 при явном указании типа документа DOCTYPE криво обрабатывает document.documentElement.scrollTop.
А у меня как раз DOCTYPE указан как:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[/QUOTE]
Тупо перебирал и подставлял ему разные типы, от HTML 4.01 Transitional до XHTML 1.0 Strict, ничего не помогало...
И вдруг идеально сработало, когда я вообще убрал DOCTYPE. Полный бред Я бы так и оставил.. Работает ведь во всех браузерах. Но требуется валидность кода, которую можно обеспечить только прописав правильный тип документа.
И вот собственно теперь такая задачка - каким образом заставить IE обработать HTML документ либо как неимеющий декларированного типа, либо переписать мой код так, чтобы форма не уползала вниз, но при этом оставить для W3C валидности DOCTYPE?
... ишчо одна глупая мысль пришла может уже при запросе браузера проверять тип браузера, если IE - выдавать ему страницу без DOCTYPE, т.е. с другим шаблоном, не имещим DOCTYPE.. так вообще реально? )