webForumDet fria alternativet

innerHeight/clientHeight

12 svar · 306 visningar · startad av pakmannen

pakmannenMedlem sedan dec. 2002227 inlägg
#1

Denna kod fungerar ej i Mozilla och Netscape, hur bör man göra?

function getViewportHeight() {
// Mozilla, Opera, Safari
if(window.innerHeight)
return window.innerHeight;

// standards mode i IE, men ingen annan mode
if(window.document.documentElement.clientHeight)
return document.documentElement.clientHeight;

// quirks mode, äldre versioner av IE, och mac IE (allt annat).
return window.document.body.clientHeight;
}

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Fungerar för mig både i Netscape 4.07 och Mozilla 1.0. Kanske felet ligger i någon annan del av scriptet?

pakmannenMedlem sedan dec. 2002227 inlägg
#3

Okej, här ligger tydligen felet:

sondera.style.top = toppos;
sondera.style.left = leftpos;

Har alltså en div som har id sondera. Hur skall man skriva i netscape/mozilla?

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Ta en titt här, i detta fall moveLayerAbs(). Där ser du exempel för (gammal) IE, Netscape och Mozilla w3c-dom.

Tillägg:
kolla även så att toppos och leftpos är heltal. Jag har för mig att bl.a. gamla Netscape-versioner är känsliga för att placera något på 45.57 pixlar :)

pakmannenMedlem sedan dec. 2002227 inlägg
#5

Jag får hela tiden detta fel när jag försöker använda mig av de funktionerna:

'document.all[...].style' är null eller inte ett objekt.

Här e koden:
if (document.all){
document.all[sondera].style.left = leftpos; document.all[sondera].style.top = toppos;
} else if (document.layers){
document.layers[sondera].left = leftpos; document.layers[sondera].top = toppos;
} else if (document.getElementById){
document.getElementById(sondera).style.left = leftpos+'px'; document.getElementById(sondera).style.top = toppos+'px';
}

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Sätt ett par "snuffar" kring ordet sondera så skall det gå bra.

:)

pakmannenMedlem sedan dec. 2002227 inlägg
#7

Okej, det fungerade ju bra (tackar), men om jag skulle vilja göra så här typ:

if (document.all){
document.all[ruta].style.background = A9AAD0;
} else if (document.layers){
document.layers[ruta].background = A9AAD0;
} else if (document.getElementById){
document.getElementById(ruta).style.background = A9AAD0;
}

och sen kunna ändra "ruta" till något typ så här:
onmouseover="light(test)"
om man skrev light('test') fungerade det inte.. Hur gör man då?

Peter SMedlem sedan dec. 20025 483 inlägg
#8
...onmouseover="light('test')"...

Sedan skall den hexadecimala koden föregås av en "brädgård" ( # ), samt omges av ett par "snuffar".

:)

pakmannenMedlem sedan dec. 2002227 inlägg
#9

Jamen detta funkar fortfarande inte!

function light(ruta) {

if (document.all){
document.all[ruta].style.background = '#A9AAD0';
} else if (document.layers){
document.layers[ruta].background = '#A9AAD0';
} else if (document.getElementById){
document.getElementById(ruta).style.background = '#A9AAD0';
}

}

och sen detta:
onmouseover="light(div1);"

Jesper TMedlem sedan nov. 20017 144 inlägg
#10

onmouseover="light('div1');"

Peter SMedlem sedan dec. 20025 483 inlägg
#11

Läs hela mitt förra inlägg ;)

:)

pakmannenMedlem sedan dec. 2002227 inlägg
#12

Men det fungerar liksom inte då heller. Fast det är iförsig så att istället så försvinner div:en. Kan ju ha med något annat att göra.

Jesper TMedlem sedan nov. 20017 144 inlägg
#13

Försvinner gör den då inte med denna kod. Eventuellt så har du satt en färg i ett css som gör att den inte syns. Men försvinner gör den inte. ;)

128 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)