Ну так а я в своем примере и не узнаю размеры <body> и <html>, а размеры рабочей клиентской области окна браузера, т.е. в приведенный мной код ничего не мешает дальше в теле <body></body> после вызова функции получения ширины и высоты (в данном случае автору требуется только ширина), исполнить еще один блок <script></script> в том числе и с document.write.
Т.е. у меня код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<script type="text/javascript">
function getGeometry(){// Функция определения размеров клиентской области окна
var g = {};
if(window.innerWidth){// Все браузеры кроме IE
g.width = window.innerWidth;
g.height = window.innerHeight;
} else if (document.documentElement && document.documentElement.clientWidth){
// Эти ф-ции для IE6 и документов с объявлением DOCTYPE
g.width = document.documentElement.clientWidth;
g.height = document.documentElement.clientHeight;
} else if (document.body.clientWidth){
// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE
g.width = document.body.clientWidth;
g.height = document.body.clientHeight;
}
return g;
}
var g = getGeometry();
alert(g.width + '\n' + g.height);
</script>
<script type="text/javascript">
document.write("Hello World !!!");
</script>
</body>
</html>
выводит сначало ширину и высоту рабочей области, потом выполняет document.write, вроде все работает O_o
P.S. Наверное я совсем дубовый
P.P.S. Но если у топикстартера страница состоит из нескольких фреймов, то да, тогда данный способ ему не подойдет.