Avatar billede pep_panic Nybegynder
30. september 2005 - 22:19 Der er 11 kommentarer

Måle højden på et browser-vindue

Hej
Kan man måle højden på et browser-vindue (altså et vindue som ikke er maksimeret)?
Avatar billede kalp Novice
30. september 2005 - 22:31 #1
i javascript...

w=screen.width
h=screen.height
Avatar billede pep_panic Nybegynder
30. september 2005 - 23:16 #2
Kan du gi et hint til hvordan h=screen.height skal bruges i et scriptet? Kan kun finde et eks. til et pop-up funktion.
Avatar billede Slater Ekspert
01. oktober 2005 - 00:24 #3
Jeg tror ikke det kan forklares tydeligere, uden at vide hvad du skal bruge det til.
I Kalp's eksempel, indeholder variablerne w og h nu bredden og højden for vinduet. Hvordan du vil bruge det, er jo op til dig.
Avatar billede pep_panic Nybegynder
01. oktober 2005 - 00:45 #4
Ok. Jeg har en række billeder (50x50px) som står ovenpå hinanden. Hvis jeg kan måle højden (ikke skærmopløsningen) på et browser-vindue, kan jeg bestemme hvor mange billeder som kan stå ovenpå hinanden, uden at brugeren skal scrolle nedad.

Resizer brugeren vinduet (enten maksimere eller gør det større/mindre i højden), tænkte jeg, at man kunne lave en dummy-gif, som i 1px vertikal-frame med højden sat til 100%, kunne måle højden af gif'en. Derefter evt. ændre antallet af billeder som skal vises (er der fx plads til 6 billeder a 50px høj, vises kun disse 6. De restende billeder vises først når man klikker på et "næste side" link (på en side som igen måler højden, tilpasser antallet af billeder, viser "forrige side", "næste side" osv.)

Resize af vinduet, reload jo ikke siden. så scriptet skal altså også opdage et resize og måle højden igen.

Muligt?
Avatar billede jakoba Nybegynder
01. oktober 2005 - 04:24 #5
Ohh. Protest.
screen.width og schreen.height har ikke noget med browservinduet at gøre, de indeholder størrelsen af brugerens skærm.

du kan få størrelsen af winduets display-areal i variablene
    window.innerWidth  og  window.innerHeight
det er de standard W3 navne og virker i Netscape, Firefox, Opera, osv. Jeg tro også i nyere IE browsere fra microsoft. I ældre microsoft skal du bruge
    document.body.clientWidth  og  document.body.clientHeight
for at få de tilsvarende værdier. en nem måde er
    var minIndreBredde = window.innerWidth || document.body.clientWidth;
og tilsvarende for højden
Bemærk at document.body.xxx ikke kan benyttes af javascript før brovseren har læst og forstået HTML sidens <body ...> tag. Før da findes der ikke noget document.body objekt.

I de standard browsere kan du aflæse brovservinduets ydre størrelse (incl værktøjslinie, status line osv.) i variablene:
    window.outerWidth  og  window.outerHeight;
Men med mindre nyere IE er begyndt at supportere de to navne. tror jeg ikke der er nogen tilsvarende variabler i IE. I ældre IE er der ihvertfald ikke.

mvh JakobA
Avatar billede pep_panic Nybegynder
01. oktober 2005 - 16:19 #6
Cool svar JakobA. Hvordan chekcer jeg for, om vinduet er resized? Eller helst, en funktion som fortæller window.innerHeight-funktionen, at vindeuet er resized...
Avatar billede jakoba Nybegynder
01. oktober 2005 - 16:52 #7
der er en onresize event, men jeg husker ikke om den er i window eller i document,body. den burde være i window.
Avatar billede jakoba Nybegynder
01. oktober 2005 - 16:57 #8
sæt din resizeevent o <body ...> tagget
funktionen nedenfor særger for ikke at gentegne vinduet før brugeren er færdig op med at resize

<script language='javascript'>

prellHandle = 0;
function resizeWait() {
  clearTimeout( prellHandle );
  prellHandle = setTimeout("self.location.reload(false)",50);
}; //end resizeWait()

</script>

</head>

<body background='Backsky.gif' onResize='resizeWait();return true;'>
Avatar billede pep_panic Nybegynder
01. oktober 2005 - 21:33 #9
Se cool ud, har ikke lige tid, slogs med et MS SQL problem. Later mate...
Avatar billede roenving Novice
02. oktober 2005 - 12:39 #10
Hrm, det er vel nok at:

<script type="text/javascript">
function getHeight(){
  return window.innerHeight ? window.innerHeight : document.documentElement ? document.documentElement.clientHeight : document.body.clientHeight;
}
function antalBilleder(){
  var h = getHeight();
  //din logik, som sætter antal billeder
}
window.onload = antalBilleder;
window.onresize = antalBilleder;
</script>
Avatar billede pep_panic Nybegynder
07. oktober 2005 - 14:23 #11
Det kan tager lige lidt tid, før jeg får lukket denne tråd.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester