Avatar billede sveinhal Nybegynder
07. februar 2001 - 17:02 Der er 8 kommentarer og
1 løsning

Dynamisk størrelse på popup

Jeg har en popup hvis innhold er av en dynamisk karakter (php-script som henter innhold fra database). Av dette følger at størrelsen på innholdet også kan variere. Jeg ønsker at størrelsen på popupvinduet skal være like stort som innholdet, slik at brukeren ikke trenger å scrolle nedover for å se hele innholdet. Likeledes ønsker jeg at vinduet ikke skal være for stort, slik at det får et stort tomt rom nederst. Størrelsen må dermed være dynamisk og avhengig av størrelsen på innholdet.
Popup\'en inneholder kun en table.
Jeg forstår at jeg må bruke window.resizeTo for å endre størrelsen, men jeg vet ikke hvordan jeg finner ut hvor stor popupen må være.
Det er kun høyden som ønskes endret.

På forhånd takk for alle svar,
Svein Halvor.
(Håper at min norsk er leselig)
Avatar billede casm2000 Nybegynder
07. februar 2001 - 17:29 #1
jeg har selv sat samme forespørgsel her på eksperten...desværre fik jeg af vide at det ikke kunne lade sig gøre....nedtuuurrrrrrrrrrrrrrrrrr
Avatar billede jumper Nybegynder
07. februar 2001 - 17:36 #2
Du kan ihvertfald lave noget i IE:

<body onload=\"AdjustSize()\">

<script language=\"Javascript\">

funciton AdjustSize(){
  var wHeight = document.body.scrollHeight;
  var wWidth = document.body.offsetHeight;
  window.resizeTo(wWidth,wHeight);
}

</script>

/Thor
Avatar billede sveinhal Nybegynder
07. februar 2001 - 19:17 #3
Den virker ikke helt.
Men nesten. scrollHeight er alltid litt for liten.
Hvorfor settes bredden til offsetHeight, og hva betyr denne?

Jeg vil kun endre høyden, ikke bredden.


-Svein Halvor
Avatar billede jakoba Nybegynder
07. februar 2001 - 20:55 #4
I Netscape (4, 4.7) ligger den udlagte sides højde i
document.height og bredden i document.width

så du er nogenlunde dækket ind hvis vi omskriver jumpers AdjustSize funktion til:

funciton AdjustSize(){
  if ( navigator.appName == \'Netscape\' ) {
    var wHeight = document.height;
    var wWidth = document.width;
  } else {
    var wHeight = document.body.scrollHeight;
    var wWidth = document.body.scrollWidth; // jumper? rettet pr gæt
  };
  window.resizeTo(wWidth,wHeight);
}

mvh JakobA
Avatar billede jakoba Nybegynder
07. februar 2001 - 21:05 #5
Bortset fra der skal noget fudge faktor på for at kompensere for browserrammen.
fx:
  window.resizeTo(wWidth+16,wHeight+50);

----

KUN rette i højden?  så sæt wWidth til
NS:  var wWidth = window.innerWidth;
IE:  var wWidth = document.body.clientWidth;

stadig med noget fudge faktor som du må teste dig til.
Avatar billede sveinhal Nybegynder
07. februar 2001 - 22:51 #6
Dette begynner å bli supert.
Men det blir for lite for resizeTo funksjonen angir ytre størrelse for popupvinduet. Dvs at jeg må legge til høyden for tittellinje og ramme. Vanligvis er denne 18 pixler (i windows), men denne kan variere. Vet du hvordan jeg finner denne verdien er? Evt. kan den regnes ut vha. differansen mellom vinduets høyde og høyden på klientområdet. Men hvordan finner jeg disse?

-svein halvor
Avatar billede sveinhal Nybegynder
07. februar 2001 - 22:54 #7
Åja, du hadde jo svart alt. Jeg hadde browseren min oppe i en times tid, før jeg skrev dette, uten å refreshe først. Takk. Men vet du hvordan man finner nøyaktige verdier for rammebredde og tittellinjehøyde?
Avatar billede jakoba Nybegynder
07. februar 2001 - 22:57 #8
Jeg kender kun en metode for netscape:

fudgeWidth = window.outerWidth-window.innerWidth;
fudgeHeight = window.outerHeight-window.innerHeight;

Hvad de tilsvarende outerXxxxx navne er for IE aner jeg ikke.
Avatar billede sveinhal Nybegynder
08. februar 2001 - 19:18 #9
Takker!
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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