Avatar billede algizoft Nybegynder
14. maj 2004 - 19:03 Der er 12 kommentarer og
1 løsning

Scrollbar detection ved overflow=auto

Hejsa

Er der mon nogen der ved hvordan man via javascript kan se om der er en scrollbar på et <div> tag med overflow=auto????

Så vidt jeg kan se er det eneste man har adgang til scrollbarens placering (myID.scrollTop), men denne er 0 både når der ikke er nogen scrollbar, og når den er der men står i toppen.
Avatar billede olebole Juniormester
14. maj 2004 - 19:07 #1
<ole>

Det kan du ikke aftaste. 'scrollTop' aftaster heller ikke scrollbarens placering, men hvorlangt, der er scrollet ned  :)

/mvh
</bole>
Avatar billede algizoft Nybegynder
14. maj 2004 - 19:25 #2
Ja den fortæller hvor langt der er scrollet ned, men denne værdi er den samme hvis der ikke er scrollet ned, og hvis der ikke er en scrollbar overhovedet....
Avatar billede algizoft Nybegynder
14. maj 2004 - 19:33 #3
Jeg har selv fundet en måde at gøre det på....

Man sammenligner højden af den div der har overflow=auto med højden af scrolleren...

var t = parseInt(bodyH-h-90);
var scrollWidth=20;
if(t >= myID.scrollHeight) {
    scrollWidth=0;
}
Avatar billede olebole Juniormester
14. maj 2004 - 19:33 #4
Ja, naturligvis - men den har intet med scrollbarens placering at gøre  :)
Anyway, så er svaret, at der ikke findes en metode til at finde ud af, om et div har en scrollbar eller ej.
/mvh
Avatar billede olebole Juniormester
14. maj 2004 - 19:37 #5
Tja ... du ved forhåbentlig selv, hvad der står i koden. Det har vi andre jo ingen chancer for at vide  :)
Avatar billede algizoft Nybegynder
14. maj 2004 - 20:01 #6
øøøhhh, hvorfor ikke???? Det er da meget simpelt.

var t = parseInt(bodyH-h-90); // Den højde min <div> skal have (t)
var scrollWidth=20; // normal scrollbar bredde
if(t >= myID.scrollHeight) { //myID er min div, scrollHeight er højden på scrollbar del
    scrollWidth=0; // der er ingen scrollbar, sæt bredden til 0
}
Avatar billede olebole Juniormester
14. maj 2004 - 20:08 #7
Hvor kommer h og 90 fra?
Scrollbars har forskellig bredde i forskellige browsere.
myID er en forkert reference til et div, der kun kan virke i IE
Avatar billede olebole Juniormester
14. maj 2004 - 20:11 #8
... og hvad er meningen med at sætte 'scrollWidth' til 0 ...? Hvilket element skal have en scrollWidth på 0? Det virker helt sort  :)
Avatar billede algizoft Nybegynder
14. maj 2004 - 20:17 #9
Hvor h og 90 kommer fra er jo ligegyldigt.... t er den højde min div har. myID er det id jeg har sat på mit div tag, og det virker fremragende i mozilla, opera, IE m.m.

scrollWidth er blot et tal trækker fra bredden af div'ens indholdsplads for at kompensere for den plads scrollbaren optager. Man kan sige at scrollWidth er den plads jeg afsætter til scrollbaren.
Avatar billede olebole Juniormester
14. maj 2004 - 21:16 #10
Vrøvl! 'myID' kan aldrig referere til et div i andet end IE, med mindre der er tale om en variabel, hvori du har lagt en reference til div'et.

Hvis det er ligegyldigt, hvor '90' kommer fra, hvorfor står der så ikke '172,34'?

'scrollWidth' er en foruddefineret property, som du ikke bare kan bruge i flæng som variabelnavn. Det er i den grad at sætte vand over til problemer
Avatar billede algizoft Nybegynder
14. maj 2004 - 21:26 #11
Hej Ole

Jeg må jo indrømme at du har ret på nogle af punkterne....

> Hvis det er ligegyldigt, hvor '90' kommer fra, hvorfor står der så ikke '172,34'?
Fordi jeg synes at der skal stå 90 og fordi det passer med andre elementer på siden.

> myID er defineret af mig, <div id="myID">... Hvis det er navnet myID du opponerer imod, så er det digtig for at øge forståelsen af mit eksempel (det gik åbenbart ikke så godt) Div'en hedder S1.

Den der med scrollWidth har du helt ret i.... Det var mit variabel navn, men jeg havde overset at det var reserveret :-(

Så efter min mening havde/har vi lidt ret begge to :-)
Avatar billede olebole Juniormester
14. maj 2004 - 21:39 #12
Ja, jeg har ret i mange ting  :)

'myID' skal være document.getElementById("myID"), hvis det skal fungere i andet end IE - og div'ets id er 'myID'. At det nu viser sig at være en reference, du selv har konstrueret tidligere i koden, kunne kun du se.

At '90' er noget, du selv har sat udfra nogle design-hensyn (og hvilke), kunne kun du vide.
Avatar billede olebole Juniormester
14. maj 2004 - 21:42 #13
... og scrollbars har i øvrigt stadig forskellige dimensioner i forskellige browsere - og under forskellige OS'er  ;o)
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