Avatar billede c9steen Nybegynder
29. juni 2000 - 08:10 Der er 3 kommentarer og
3 løsninger

Læsning af top position af lag i Explorer

Jeg har oprettet et lag, til en dropdown menu, som jeg skal have gemt op under browserkanten. Positionen sættes i en <STYLE>-tag

<STYLE TYPE="text/css">
  #menu1 {position: absolute; top: -180; left: 10; z-index: 11;}
</STYLE>

Laget er defineret i en <DIV>-tag

<DIV ID="menu1">
  <IMG SRC="knapper/dropMenu.gif" BORDER="0" WIDTH="80" HEIGHT="200" ALT="">
</DIV>

Jeg har efterfølgende brug for at kunne udtrække den pixe-mæssige top-placering af laget. Det fungerer fint i Netscape med

posVal = document.menu1.top;

men jeg kan ikke få den tilsvarende Explorer kode til at virke

posVal = document.all.menu1.style.pixelTop;

... her får jeg hele tiden værdien nul. Hvis jeg forlods tilskriver værdien med javascriptet, kan jeg trække den korrekte værdi ud. Opgaven er "bare", at jeg  skal kunne trække placeringen ud uden først at skulle definere den på anden vis end i min <STYLE>

How to du dat?  :-)
Avatar billede newbie.dk Praktikant
29. juni 2000 - 10:18 #1
Hvad er et lag?
Avatar billede crax Nybegynder
29. juni 2000 - 10:23 #2
Hvad er pixelTop?

Jeg ville mene, du blot skulle benytte
posVal = document.all.menu1.style.top

Prøv i øvrigt at kigge på den tutorial der hedder Curious Eyes på www.htmlguru.com
Der bliver emnet behandlet ret godt...

Mvh.
Crax
Avatar billede olebole Juniormester
29. juni 2000 - 17:24 #3
<ole>
Syntaks for NS:
    posVal = document.layers['menu1'].top;
...for IE:
    posVal = document.all['menu1'].style.pixelTop;

I IE returnerer 'top' '50px', hvis 'top' er sat til '50px' i <style>. 'pixelTop' returnerer den nummeriske værdi '50' - altså uden 'px'.
'pixelTop' bør således bruges, hvor man vil være sikker på at have en nummerisk værdi til rådighed (ved videre beregninger, osv).
Man kunne selvfølgelig undlade at skrive 'px' i <style> (som du selv har gjort), men det sikrer nu engang større ensartethed i visningen X-browser / X-platform.
/Vh
</bole>
Avatar billede ultik Nybegynder
29. juni 2000 - 23:13 #4
tjek www.dansteinman.com

han har en FOR FED tutorial om DHTML, kaldet DynDuo, den er 100% crossbrowser, og gør det på en sej måde. Der findes også eksempler, og en "komponentpakke" han kalder DynAPI, med mange filer der kan bruges til hurtigere at lave en hjemmeside......

Her er en fil, som jeg har lavet med hans "guidelines", og ved hjælp af tutorialen, der kan du også finde kode til at aflæse top.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Test af museevent</title>
<script language="JavaScript">
<!--

var ie;
var ns;
var lPointer;

function moveTo(obj,x,y) {
    obj.xpos = x;
    obj.left = obj.xpos;
    obj.ypos = y;
    obj.top = obj.ypos;
}


function opdater(e) {
    // Main function, kaldes hver gang musen bevæger sig    
    var x = (ns4) ? e.pageX : event.x + document.body.scrollLeft;
    var y = (ns4) ? e.pageY : event.y + document.body.scrollTop;

    // så billedet ikke ender under markøren
    x += 10;
    y += 10;
   
    moveTo(lPointer, x, y);
}

function init() {

    ie4 = (document.all) ? true : false;
    ns4 = (document.layers) ? true : false;
   
    if (ns4) {
        // Netscape "fanger" ikke per default mousemove events
        document.captureEvents(Event.MOUSEMOVE)
    }   
    document.onmousemove = opdater;
    if (ns4) lPointer = document.pointer
    if (ie4) lPointer = pointer.style
    lPointer.xpos = parseInt(lPointer.left)
    lPointer.ypos = parseInt(lPointer.top)


}

//-->
</script>
</head>


<body onLoad="init();" bgcolor="#FFFFFF">

<div id="pointer" style="height: 20; width: 19; left: 200; top: 200; position: absolute; z-index: 100">
<img src="hjem.gif" width="19" height="20" alt="" border="0">
</div>

</body>
</html>

Med venlig hilsen
Ulrik Jensen
ulrik@qcom.dk
http://www.qcom.dk
Avatar billede ultik Nybegynder
29. juni 2000 - 23:16 #5
var x = (ns4) ? e.pageX : event.x + document.body.scrollLeft;
var y = (ns4) ? e.pageY : event.y + document.body.scrollTop;

Grunden til disse linier er, at IE ikke returner helt det samme pixel tal som NS, og tallet skal derfor "tweakes" !
Avatar billede c9steen Nybegynder
09. juli 2000 - 22:09 #6
Se æh, nu er jeg i den situation, at ingen af jer har givet mig svaret men at jeg alligevel har udledt en brugbar løsning af det, som er fremkommet.

Jeg tildeler jer derfor hver en andel :-)

Jeg har anvendt STYLE angivet i HEAD og kan af denne årsag ikke udtrække den værdi, som jeg ønsker. Den ovenfor angivne syntaks til trods. Først i det øjeblik, hvor jeg angiver min STYLE i selve DIV-tag'en vil værdien blive tildelt korrekt og dermes fungere i IE.

Men... Microsoft laver så mange julelege ... ;-)

Tak for hjælpen
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