Avatar billede george Nybegynder
26. februar 2005 - 22:59 Der er 9 kommentarer og
1 løsning

Hvordan for jeg et i layers koordinater ?

Jeg har et layer og ønsker at få fat på det's position. Hvordan gør jeg det ?

Her er et udsnit af koden.

Først funktionen der laver mit layer :
var lastx,lasty,lastw,lasth
function addWindow(heading,content,x,y,w,h,bg,bga){
    var num=oWin.length; wins=num+1; var str=""
    str+='<div id="divWin'+num+'" class="clWin">\n'
    +'<div id="divWinHead'+num+'" class="clWinHead"><IMG SRC="image/sp.gif" BORDER="0" WIDTH="5" HEIGHT="1" ALIGN="bottom" ALT="">'+heading+'</div>\n'
    +'<div id="divWinButtons'+num+'" class="clWinButtons">\n'
        +'<map name="map'+num+'">\n'
            +'<area shape="rect" coords="30,2,42,14" href="#" alt="Close Window" onclick="oWin['+num+'].close(); return false" onFocus="this.blur()">\n'
            +'<area shape="rect" coords="16,2,28,14" href="#" alt="Maximize" onClick="oWin['+num+'].maximize(); return false" onFocus="this.blur()">\n'
            +'<area shape="rect" coords="2,2,14,14" href="#" alt="Minimize" onClick="oWin['+num+'].minimize(); return false" onFocus="this.blur()">\n'
        +'</map>\n'
        +'<img usemap="#map'+num+'" src="image/buttons1.gif" width="44" height="16" alt="" border="0">\n'
    +'</div>\n'
    +'<div id="divWinResize'+num+'" class="clWinResize">\n'
    +'</div>\n'
    +'<div id="divWindow'+num+'" class="clWindow">\n'
        +'<div id="divWinText'+num+'" class="clText">'
    if(content){
        str+=content+'</div>\n'
        +'</div>\n'
        +'<div id="divWinUp'+num+'" class="clUp"><a href="#" onclick="return false" onmouseover="winScroll=1; oWin['+num+'].down();" onmouseout="noScroll()"><img src="image/arrow_up.gif" width="11" height="12" alt="" border="0"></a></div>\n'
        +'<div id="divWinDown'+num+'" class="clDown"><a href="#" onclick="return false" onmouseover="winScroll=1; oWin['+num+'].up();" onmouseout="noScroll()"><img src="image/arrow_down.gif" width="11" height="12" alt="" border="0"></a></div>\n'
        +'</div>'
    }
    document.write(str)
    if(content) create_window(num,x,y,w,h,bg,bga)
}
function endWin(){
    num=wins-1
    str='\n</div>\n'
    +'</div>\n'
        +'<div id="divWinUp'+num+'" class="clUp"><a href="#" onclick="return false" onmouseover="winScroll=1; oWin['+num+'].down();"  onmouseout="noScroll()"><img src="image/arrow_up.gif" width="11" height="12" alt="" border="0"></a></div>\n'
        +'<div id="divWinDown'+num+'" class="clDown"><a href="#" onclick="return false" onmouseover="winScroll=1; oWin['+num+'].up();" onmouseout="noScroll()"><img src="image/arrow_down.gif" width="11" height="12" alt="" border="0"></a></div>\n'
    +'</div>'
    return str
}
</script>

Og så koden der kalder funktionen :
<script>
//Start window
addWindow("IT-NYHEDER")
</script>

<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr>
      <td valign="top" Class="tekst"><IMG SRC="IMAGE/SP.GIF" BORDER="0" WIDTH="1" HEIGHT="3" ALIGN="bottom" ALT=""></td>
    </tr>
    <tr>
      <td valign="top" Class="tekst"><IMG SRC="IMAGE/SP.GIF" BORDER="0" WIDTH="2" HEIGHT="1" ALIGN="bottom" ALT=""><A HREF="http://www.comon.dk" TARGET="self">ComOn</A></td>
    </tr>
    <tr>
      <td valign="top" Class="tekst"><IMG SRC="IMAGE/SP.GIF" BORDER="0" WIDTH="2" HEIGHT="1" ALIGN="bottom" ALT=""><A HREF="http://www.itavisen.dk" TARGET="self">IT-Avisen</A></td>
    </tr>
    <tr>
      <td valign="top" Class="tekst"><IMG SRC="IMAGE/SP.GIF" BORDER="0" WIDTH="2" HEIGHT="1" ALIGN="bottom" ALT=""><A HREF="http://www.virus112.dk" TARGET="self">Virus112</A></td>
    </tr>
</Table>

<script>
//End window
document.write(endWin())
//Create window (this have to be done manually. Just leave wins-1 in there)
create_window(wins-1,15,75,220,250,"#697986","#697986")
</script>
Avatar billede roenving Novice
26. februar 2005 - 23:07 #1
Hvordan skal du bruge dit 'vindue' ?-)

Umiddelbart ser det ikke ud til at det er en optimal metode at bruge document.write, men der findes muligvis situationer, som kan retfærdiggøre den vinkel på problemet ...

-- hvis du tænker i en iframe, kan det være problematisk, men et udgangspunkt kan være denne lille smarte funktion:

function getPos(elm) {//jumper
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
}
Avatar billede george Nybegynder
27. februar 2005 - 02:22 #2
Hmm... Hvordan får jeg x,y koordinaterne ud på ovenstående eks. "IT-NYHEDER" ?

Wild guess !
<script>
document.write(getPos(IT-NYHEDER.x))
document.write(getPos(IT-NYHEDER.y))
</script>
Avatar billede george Nybegynder
27. februar 2005 - 10:53 #3
Det virkede selvfølgelig ikke.
Avatar billede roenving Novice
27. februar 2005 - 14:17 #4
<script type="text/javascript">
window.onload = function(){
  alert(getPos(document.getElementById('IT_NYHEDER')).x + "\n" + getPos(document.getElementById('IT_NYHEDER')).y);
}
</script>

-- men hvilket id har vinduet, for det er det du skal indsætte i stedet for IT_NYHEDER !-)
Avatar billede george Nybegynder
27. februar 2005 - 15:10 #5
Vinduet havde ikke noget id, men det har det nu og det virker perfekt.

Takker.

Et svar tak ;-)
Avatar billede roenving Novice
27. februar 2005 - 15:22 #6
Velbekomme '-)
Avatar billede roenving Novice
27. februar 2005 - 15:32 #7
-- og tak for point ;~}
Avatar billede george Nybegynder
27. februar 2005 - 15:45 #8
Jeg var vist lidt for hurtíg. Den viser ikke den rigtige position. Den siger "0,65", mit lille javascript viser at den burde hedde 252,77 ??

Her er Javascriptet jeg har testet med :

Set up a form named "Show" with text fields named "MouseX"
and "MouseY".  Note in the getMouseXY() function how fields
are addressed, thus: document.FormName.FieldName.value
//-->

<form name="Show">
<input type="text" name="MouseX" value="0" size="4"> X<br>
<input type="text" name="MouseY" value="0" size="4"> Y<br>
</form>

Use JavaScript ver 1.2 so older browsers ignore the script.
The &lt;script> must be *after* the &lt;form> -- since the form
and fields must exist *prior* to being called in the script.
//-->

<script language="JavaScript1.2">
<!--

// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var tempX = 0
var tempY = 0

// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  } 
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0} 
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  document.Show.MouseX.value = tempX
  document.Show.MouseY.value = tempY
  return true
}

//-->
</script>
Avatar billede roenving Novice
27. februar 2005 - 15:49 #9
Kan du linke til et eksempel ?-)
Avatar billede george Nybegynder
27. februar 2005 - 16:28 #10
Har desværre ingen steder jeg kan uploade det.

Som du kan se skulle de nøjagtige koordinater være 250,75

create_window(wins-1,250,75,220,250,"#697986","#697986")

Har det ikke noget med relativ/absolute placering at gøre ? (bare en tanke)
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