Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:13 Der er 45 kommentarer og
1 løsning

Scrollbar fylder!

Hvordan kan jeg undgå at en scrollbar i en frame fylder selvom den ikke er der (altså når siden indhold kan være i framen). Der skal være scrollbar="auto" på min side.
Avatar billede Slater Ekspert
02. maj 2002 - 11:16 #1
Du kan med javascript teste for om document.body.scrollHeight > document.body.clientHeight. Hvis den er det kan du sætte document.body.scroll = "no";

Jeg mener i hvert fald det er sådan.
Avatar billede zob Nybegynder
02. maj 2002 - 11:18 #2
link???
Gi meg lige et link ik?? :]
Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:21 #3
viperine> kan di give en stump kode?
Avatar billede sukos Juniormester
02. maj 2002 - 11:21 #4
<frameset cols="20%,*" framespacing="0" framepadding="0" border="0" frameborder="0">
Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:23 #5
sukos> din kode hjælper ikke. :-)
Avatar billede sukos Juniormester
02. maj 2002 - 11:26 #6
Hmm, den skulle ellers gøre at scrollbaren kun kommer frem når det er nødvendigt, og ellers ikke?
Avatar billede Slater Ekspert
02. maj 2002 - 11:30 #7
document.onresize = resize;

function resize() {
  if (document.body.clientHeight < document.body.scrollHeight)
    document.body.scroll = "no";}
Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:30 #8
Koden virker også på den måde, men det jeg eftersøger, er at der ikke må være en afsat plads til scrollbaren (en plads der ligner sidens baggrund; dvs. en slags margen).
Avatar billede sukos Juniormester
02. maj 2002 - 11:33 #9
Nårrrhhh :o)
Avatar billede Slater Ekspert
02. maj 2002 - 11:34 #10
Hov, min kode skal lige køres en gang med det samme. dvs:

document.onresize = resize;

function resize() {
  if (document.body.clientHeight < document.body.scrollHeight)
    document.body.scroll = "no";
}
resize();
Avatar billede Slater Ekspert
02. maj 2002 - 11:35 #11
Det går helt galt for mig i dag. Den skal da også ændres tilbage når der er brug for den.

document.onresize = resize;

function resize() {
  if (document.body.clientHeight < document.body.scrollHeight)
    document.body.scroll = "no";
  else
    document.body.scroll = "yes";
}
resize();
Avatar billede Slater Ekspert
02. maj 2002 - 11:36 #12
og hvis koden skal være Netscape/Mozilla kompatibel skal du sætte fjerne document.onresize - linjen og i stedet skrive

<body onresize="resize()">

i HTML'en
Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:38 #13
hvorrdan skal kode sættes ind?
Avatar billede Slater Ekspert
02. maj 2002 - 11:39 #14
For helvede... Nu bliver jeg snart sur på mig selv.
Jeg har også vendt større-end tegnet forkert.

Her kommer den igen

<body onresize="resize()">

<script language="javascript1.2" type="text/javascript">

function resize() {
  if (document.body.clientHeight > document.body.scrollHeight)
    document.body.scroll = "no";
  else
    document.body.scroll = "yes";
}
resize();

</script>
</body>
Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:42 #15
Den virker, men nu kommer der bare ingen scrollbars, selv når de skal være der...
Avatar billede zob Nybegynder
02. maj 2002 - 11:42 #16
Vil du ik lige gi mig et link så jeg kan se hvad det her er og tage mine professor briller på??? :] rudi1234
Avatar billede jakoba Nybegynder
02. maj 2002 - 11:42 #17
altså:
  først skal broveren udlægge teksten nogmalt så vi kan måle hvor høj den bliver. Det gør den pr automatik med en forventling om at der skal være plads til en scrollbar i venstre side.
  Så måler vi og opdager at der ikke er bruge for den plads og sætter derfor body.scroll til 0 (='no').
  Tilsidst skal vi så have browseren til at udlægge den samme tekst een gang til, men uden at reservere plads til nogen scrollbar.

Utestet, men jeg tror du kan trigge den anden udlægning med:
  document.body.innerHTML = document.body.innerHTML;
der er som sagt gætteri, men prøv.

mvh JakobA
Avatar billede Slater Ekspert
02. maj 2002 - 11:43 #18
den virker da på min dåse.
Avatar billede rudi1234 Nybegynder
02. maj 2002 - 11:44 #19
siden er ikke offentlig endnu, så jeg vil helst ikke lægge den ud... Men jeg prøver mig lige frem med disse råd. (jeg smutter dog for i dag).
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 11:45 #20
du må ikke slå mig når jeg spørger om 'resize' ikke er et reserveret ord, og derfor ikke må benyttes som navn på din funktion...?
Avatar billede Slater Ekspert
02. maj 2002 - 11:50 #21
lerchedahl>> Nix. det er en HTML event, ikke et javascript keyword. Ingen prob der. I hver fald ikke på IE, men jeg ved ikke med Netscape-javascript.
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 11:52 #22
godt så, men der er vist alligevel en lille smutter, for når du kalder funktionen nederst i dit script skal der vist ikke være nogen parenteser... :

<script language="javascript1.2" type="text/javascript">

function resize() {
  if (document.body.clientHeight > document.body.scrollHeight)
    document.body.scroll = "no";
  else
    document.body.scroll = "yes";
}
resize;

</script>

/lerchedahl
Avatar billede Slater Ekspert
02. maj 2002 - 11:53 #23
jo.
Avatar billede Slater Ekspert
02. maj 2002 - 11:56 #24
Når du kalder en funktion direkte skal der altid parenteser efter. I modsætning til VBScript selvfølgelig.
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 11:56 #25
erhm.... nej. hvis der er parenteser får jeg en scriptfejl, og jeg har set utallige eksempler hvor der netop ikke benyttes parenteser netop i den situation...
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 11:57 #26
hmm, hvad så hvis du havde skrevet:

window.onload = resize;

ville du også have parenteser dér?
Avatar billede Slater Ekspert
02. maj 2002 - 11:57 #27
tror du ikke det er når du sætter en eventhandler op? Der skal nemlig ikke parenteser. Desuden er jeg skam sikker i min sag: Der SKAL parenteser!!
Avatar billede Slater Ekspert
02. maj 2002 - 11:58 #28
Nej i det sidste eksempel du nævner sætter du netop en eventhandler op. Der skal IKKE parenteser. Det er hele min pointe.
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 12:00 #29
ok, point taken - så er det bare skummelt at jeg får en scriptfejl når de er der, men ikke når de ikke er der... I begge tilfælde fungerer scriptet...
Avatar billede Slater Ekspert
02. maj 2002 - 12:01 #30
Ja, det lyder ret skummelt. Hvilken browser bruger du?
Avatar billede jakoba Nybegynder
02. maj 2002 - 12:13 #31
i linien
    window.onload = resize;
assigner vi en funktion til en variabel. det kan man sagtens, prøv fx selv med

var minalert = alert;
minalert( "mon dette bliver skrevet" );

uden parenteres efter er det referencen til funktionen.
med parenteser efter er det aktivering af funktionen.

så viperine har helt ret, der skal parenteser det ene sted men ikke det andet.

Men jeg ville nu også kalde den funktion noget andet end resize, det smager for meget af reserveret ord :-)

mvh JakobA
Avatar billede webdesigner Praktikant
02. maj 2002 - 12:16 #32
du kan vist finde koden ved at lave en side i frontepage (et skidt program hvis det er WYSIWYG du vil have)
du laver en fram side oprette to sider og laver skrift der fylder mer end siden herefter kan du højerkilkke vælge sidens insdtillinger og fjerne alle scroolbars
Avatar billede jakoba Nybegynder
02. maj 2002 - 12:20 #33
prøv evt at skrive

alert( "resize er " +typeof( resize ) );

lige foran den linie hvor der står
resize();
Avatar billede Slater Ekspert
02. maj 2002 - 12:24 #34
webdesigner>> Han vil jo kun fjerne dem når brugeren resize vinduet (eller kører i et opløsning) så teksten godt kan være der.

jakoba>> Tak for støtten, men hvorfor "må" jeg ikke bruge ordet fordi det "lugter af reserveret ord"??
Avatar billede Slater Ekspert
02. maj 2002 - 12:24 #35
Okay, min stavning gik da helt galt der... Nedtur.
Avatar billede jakoba Nybegynder
02. maj 2002 - 12:52 #36
Du må gerne. Og jeg kan heller ikke finde resize som variabel eller funktion i nogen af mine browsere.
Jeg prøver blot altid at undgå sådan nogen navne der ser ud til de kunne betyde noget i en gammel, anderledes eller kommende browserversion.
Avatar billede Slater Ekspert
02. maj 2002 - 12:56 #37
Det gør jeg også normalt, men jeg kalder bare mine funktioner for bestemte ting helt automatisk. Tænker ikke rigtig over det.

onresize = resize;
onscroll = scroll;
onkeydown = object_kd;

osv...
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 12:56 #38
jeg er helt med nu (det er 'webdesigner' vist ikke *heh* :-), og det er da også ok at kalde funktionen for resize, men endnu mere ok at kalde den eksempelvis scrollcontrol...
Avatar billede Slater Ekspert
02. maj 2002 - 12:57 #39
scrollcontrol?? Det lyder da helt funky :P
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 13:01 #40
...men ville du være i tvivl om hvad funktionen gør? nej, vel... :o)
Avatar billede Slater Ekspert
02. maj 2002 - 13:04 #41
min første tanke ville egentlig nok være at den flyttede scollbaren, men ok33..
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 13:07 #42
heh, ja ok - det kan man vel på sin vis også godt sige at den gør ;-)

...dog ville mine tanker flyve et lidt andet sted hen hvis funktionen hedder resize...

nok om det, det er jo fløjtende ligegyldigt! :o)
Avatar billede Slater Ekspert
02. maj 2002 - 13:27 #43
nå ja... Nej, skal vi ikke starte en hjemmeside med diskussionsfora udelukkende omhandlende om man skal kalde en eventhandler for resize-eventen for resize eller scrollcontrol??? Den kan passsende hedde:

http://www.forumforomresizeventsskalhedderesizeellerscrollcontrol.dk
Avatar billede lerchedahl Nybegynder
02. maj 2002 - 14:38 #44
hvad med http://www.forumforomresizeventsskalhedderesizeellerscrollcontrol.org...

så kan vi blive anerkendt som landsdækkende non-profit organisation og få en masse medlemmer...
Avatar billede Slater Ekspert
03. maj 2002 - 10:20 #45
Yeah!!!
Avatar billede rudi1234 Nybegynder
09. maj 2003 - 09:26 #46
Lukker spm.
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