[NS6/Moz] document.body.offsetHeight

Pagina: 1
Acties:

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Hallo,

Ik heb ergens in een pagina de hoogte in pixels van een frame nodig, of eigenlijk de hoogte van de hoogste DIV die in het frame zit. Daarna zet ik alle hoogten van alle DIVS op die hoogste hoogte, zodat alles netjes even hoog is. Op IE doe ik dat zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function fillOut(dontscroll)
{   
    if(!dontscroll)
    {
        parent.main.document.body.scrollTop = 0;    
    }
    
    var leftlist     = parent.main.document.getElementById("leftlist");
    var midlist  = parent.main.document.getElementById("midlist");
    var rightlist    = parent.main.document.getElementById("rightlist");
    
    leftlist.style.height = "0px";
    midlist.style.height = "0px";
    rightlist.style.height = "0px";
    
    height = parent.main.document.body.scrollHeight;

    leftlist.style.height = height + "px";
    midlist.style.height = (height-85) + "px";
    rightlist.style.height = (height-85) + "px";
}

Die -85 is ff niet zo belangrijk. Door ze eerst allemaal op 0 te zetten en daarna pas de hoogte te meten voorkom je dat het frame zo hoog wordt als de hoogste body die er ooit in heeft gezeten (de inhoud van het frame wordt immers overal met innerHTML gezet, refreshed dus NOOIT).

Maar op Netscape 6 werkt dit dus niet. De hele innerHTML truucendoos wel enzo, maar het bepalen van de hoogte van m'n body wat met scrollHeight op IE gebeurt. Dit zou volgens de API docs moeten met document.body.offsetHeight, maar die geeft de hoogte van het zichtbare gedeelte van het frame weer, itt de werkelijke hoogte.

Er moet toch ergens een waarde bij Netscape bekend zijn over de hoogte van het frame?? Hij scrollt immers prima. Probleem blijft dus dat de 2 laagste DIV's niet hoger worden dan de hoogte van het zichtbare gedeelte van het frame. En dat mag niet, want ze hebben allemaal een achtergrondkleur die gewoon netjes moet uitvullen tot aan beneden.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:46

crisp

Devver

Pixelated

Om de totale hoogt van je pagina te bepalen kan je in NS/Moz document.body.offsetHeight uitvragen. Van een div die je dat met document.getElementById('divje').scrollHeight

Als ik het zelf ook even niet meer weet maak ik altijd een functie die ik onload aanroep:
code:
1
2
3
4
5
6
7
8
9
10
11
function showme() {

  var tt = '';
  for (p in document.body) {
    pval = eval('document.body.' + p);
    tt += '<b>' + p + '</b>: ' +pval + '<br>';
}

  document.body.innerHTML = tt;

}

Intentionally left blank


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
tsja, ik had het gisteren voor elkaar. maar vandaag wil ie ineens niet meer, hij blijft maar '0' terug geven...

dat wordt weer een avondje zoeken...

bedankt voor de div-hoogte-tip trouwens, daarmee kan ik het denk ik ook wel voor elkaar krijgen