Avatar billede moefelt Nybegynder
16. juli 2003 - 23:51 Der er 11 kommentarer og
1 løsning

opdater document.body.clientWidth hvis resize af window

Hey y'all

jeg har dette script der sætter myHeight og myWidth men hvis man resizer vinduet bliver disse vars ikke ændret før man refresher. Hvordan gør jeg så myHeight og myWidth bliver opdateret når man resizer vinduet??

Her er script:

var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else {
        if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) {
            myWidth = document.documentElement.clientWidth;
            myHeight = document.documentElement.clientHeight;
        } else {
            if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                myWidth = document.body.clientWidth;
                myHeight = document.body.clientHeight;
            }
        }
    }
Avatar billede roenving Novice
16. juli 2003 - 23:59 #1
Hvordan kalder du den funktion ?-)
Avatar billede roenving Novice
17. juli 2003 - 00:10 #2
Normalt ville jeg gøre det sådan:

<script type="text/javascript" language="javascript">
var myWidth = myHeight = 0;

function getDimensions(){
    if( typeof( window.innerWidth ) == 'number' ) {
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else {
        if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) {
            myWidth = document.documentElement.clientWidth;
            myHeight = document.documentElement.clientHeight;
        } else {
            if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                myWidth = document.body.clientWidth;
                myHeight = document.body.clientHeight;
            }
        }
    }
}
</script>

<body ... onload="getDimensions();" onresize="getDimensions();">
Avatar billede moefelt Nybegynder
17. juli 2003 - 00:26 #3
hmm det virker ikke helt.

Jeg bruger scriptet til at sætte rammen for hvor langt nogle movable layers kan bevæges. Se test på www.knasch.dk/test. Hvordan kunne man evt lave en funktion der opdaterede punkt for punkt så hvis man resizer "over" layer, flytter layer med mv.
Avatar billede roenving Novice
17. juli 2003 - 00:33 #4
Næh, for du bruger et af de scripts, som går ud fra, at der ikke i verden findes andre scripts, som kan have brug for at blive intialiseret, men det jeg skriver virker faktisk, hvis du ikke tillader den der simplescroll at tro den er alene i verden !-)
Avatar billede roenving Novice
17. juli 2003 - 00:37 #5
Du skal gøre sådan:

Ændr funktionen som jeg har vist ovenfor (altså læg den ind som funktion !-)

Så skal du tillade _flere_ ting at blive initialiseret, ved at ændre denne linje:

window.onload = function() {

til:

function dragInit(){

og så i dit <body>-tag skrive:

<body onload="getDimensions();dragInit();" onresize="getDimensions()">

-- så skulle det også virke efter resize ,-)
Avatar billede roenving Novice
17. juli 2003 - 00:41 #6
Mit gæt er at de mennesker som skriver de der funktioner ikke tror på, at der er andre som kan gennemskue scripting og events -- og slet ikke nogen, som bruger internettet ...

Ved at gøre det på den måde, det er gjort slipper folk for at skulle sætte stumper ind flere steder -- hvilket i sig selv er ganske glimrende -- men det betyder så også, at man som regel _kun_ kan benytte sig af een funktionalitet på et helt site -- TÅBELIGT !!
Avatar billede moefelt Nybegynder
17. juli 2003 - 00:53 #7
yeps meget. Fik det til at virke hvis man sætter:

onresize="getDimensions();dragInit();">

men men - hvis man resizer over layers'ne (hehe) så skal layer næsten følge med eller gå til nærmeste yderpunkt hvis du forstår
Avatar billede roenving Novice
17. juli 2003 - 00:59 #8
Så meget har jeg ikke kigget på den kode du bruger -- selvfølgelig vil man kunne finde det !-)

-- meen jeg har ikke lige lysten til at dykke i den slags scripts, sidst jeg prøvede med et script af den type tog det mig flere timer at forstå/gennemskue -- og så var lige præcist det ønskede ikke muligt med den konkrete opbygning af funktionaliteten !o]

-- men det er vel også en ekstrem situation, som stort set aldrig vil forekomme '-)
Avatar billede moefelt Nybegynder
17. juli 2003 - 01:08 #9
hvad hvis man satte en ny: style="left:120px; top:120px;" på layers  ved resize evt - kan du evt du komme med et forslag jeg måske selv kunne arbejde videre med
Avatar billede roenving Novice
17. juli 2003 - 01:15 #10
Sidst i getDimensions kan du indsætte kode sådan:

s1=document.getElementById('scrollContainer').style;
s2=document.getElementById('root2').style;
s1.left=s1.top=s2.left=s2.top='120px';

Den sidste er en fræk javascript-konstruktion, men den skulle virke !-)
Avatar billede moefelt Nybegynder
17. juli 2003 - 01:19 #11
hov - yeps super fræk ha ha - prøver lige at rode lidt med det. Mange tak!!

// moefelt
Avatar billede roenving Novice
17. juli 2003 - 01:22 #12
-- og tak for points ;~}
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