Avatar billede maxa Nybegynder
07. november 2005 - 14:40 Der er 12 kommentarer og
1 løsning

Bestem curserens koordinater i forhold til toppen af dokumentet.

Hej med jer,

Jeg har et problem i forhold til at finde musens placering på en webside. Hvis jeg bruger event.clientX og event.clientY, får jeg koordinaterne på musens plasering på skærmen, med udgangspunkt i browservinduet. Men jeg er altså intersesseret i at finde koordinaterne i forhold til toppen af dokumentet. Er der nogen der har nogen ideer?? -evt. en anden event funktion eller ligende.

MVH Max
Avatar billede olebole Juniormester
07. november 2005 - 14:49 #1
<ole>

Bruger du event.clientX og event.clientY får du netop koordinaterne i forhold til dokument-elementet - og ikke i forhold til browserens viewport. Kan du trylle noget andet frem, må du lægge et eksempel  :)

/mvh
</bole>
Avatar billede oversjanten Nybegynder
07. november 2005 - 14:50 #2
Avatar billede maxa Nybegynder
07. november 2005 - 15:25 #3
Hej Olebole, jeg kan få den til at ændre koordinater hvis jeg scroller med vinduet. Det er det som jeg gerne vil undgå. Det er et billedbeskæringsværktøj, som jeg sidder og fedter med. Alt virker fint, hvis man bare ikke scroller med sit vindue, så begynder den at skære forkert, da den begynder at udregne efter hvor musen befinder i forhold til browserens top og left, frem for billedets top og left. Jeg medsender den del af koden, som omhandler netop det problem.

document.write("<a href='#' style='cursor:se-resize'  onmouseover='resize_hot = true' onmousemove='start_resize(event.clientX,event.clientY)' onmousedown='stop_resize()' ><img border=0 src='contool/bilred/move.gif'></a>")

function start_resize(lx,ly)
{
if (resize_hot){
boxBrede = (lx-parseInt(document.getElementById('corpLayer').style.left));
boxHoejde = (ly-parseInt(document.getElementById('corpLayer').style.top));
resize()
}}

function resize(){
document.getElementById('kasse').style.width = boxBrede;
document.getElementById('kasse').style.height = boxHoejde;
document.getElementById('boxWidth').value = boxBrede;
document.getElementById('boxHeight').value = boxHoejde;}


Hej Oversjanten, dit eksempel bruger også event.clientX og Y, hvilket skaber det samme problem som dem jeg kæmper med. Men eksemplet illustrer fint hvad jeg mener, prøv at indsæt det på en webside, scroll med vinduet og hold øje med statusbaren i bunden af siden. Koden er her:

var isNN = document.layers ? true : false;
var isIE = document.all ? true : false;

  if ( isNN )
    document.captureEvents(Event.MOUSEMOVE)
  document.onmousemove = handleMouseMove;


function handleMouseMove(evt) {
  mouseX = isNN ? evt.pageX : window.event.clientX;
  mouseY = isNN ? evt.pageY : window.event.clientY;
  window.status = "Mouse: X="+mouseX+",Y="+mouseY;
  return false;
}


MVH Max
Avatar billede olebole Juniormester
07. november 2005 - 16:41 #4
arrrgghhh ... nu forstår jeg, hvad du mener. Du skal lægge document.DocumentElement.scrollTop og -scrollLeft til  ;o)
Avatar billede olebole Juniormester
07. november 2005 - 16:42 #5
- oooops:
  document.documentElement.scrollTop  :)
Avatar billede olebole Juniormester
07. november 2005 - 16:44 #6
- men derud over skal du altid sætte enheder på styles:
  var tal = 253;
  ELEMENT.style.width = tal + "px";
Avatar billede maxa Nybegynder
07. november 2005 - 17:07 #7
Tak for hjælpen Ole. Jeg udskiftede documentElement med body, så kørte det...

Jeg var ikke klarover det med enhederne, nu har jeg i stedet brugt tid på at fjerne dem, da man ikke kan lægge tal sammen med enheder på. Men det kan jo være at det er derfor jeg har lidt problemer i forhold til Firefox..

Kast et svar, og du skal blive belønnet...

Max
Avatar billede olebole Juniormester
07. november 2005 - 17:13 #8
Så kan jeg regne ud, du sætter IE i quirks mode. Du bør bruge en fuld DTD med definitions URL ... f.eks:
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

- ellers overholder IE ikke CSS' box-model og du får problemer med at få ting til at blive vist ens og fungere ens i forskellige browsere  ;o)
Avatar billede olebole Juniormester
07. november 2005 - 17:15 #9
- når en browser overholder CSS-standarden er det dokument-elementet, der scroller - ikke body-elementet  :)
Avatar billede olebole Juniormester
07. november 2005 - 17:18 #10
Hvis du tester i FF, vil den have document.documentElement.scrollTop, uanset DTD. Derfor bør du altid bruge en fuld DTD - og intet skrive før den - så tingene fungerer ens  ;o)
Avatar billede maxa Nybegynder
07. november 2005 - 17:32 #11
Ja - Og det var så der hele mit arbejde fuckede op... Nå, jeg må prøve at få det rettet til. Har det noget at sige mine sider er i APS?
Avatar billede olebole Juniormester
07. november 2005 - 18:31 #12
Nej, ASP afvikles på serveren og spytter bare HTML-kode ud. Ja, jeg ved, der sikkert sker en del med desiget, men gør dig selv den tjeneste at rette det. Det gør udvikling og vedligeholdelse langt lettere  ;o)

... og take for points  :)
Avatar billede maxa Nybegynder
07. november 2005 - 18:41 #13
Selv tak. Jeg opretter et nyt spørgsmål, hvor det går lidt på et par konkrete rettelser i forbindelse med den nye tilretning. Hvis du har mulighed, tid og overskud kunne det være fedt at få din respons... q: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





White paper
SAP: Skab værdi og minimér omkostninger med effektiv dokumenthåndtering