magicgunnar Skrevet 14. juni 2007 Del Skrevet 14. juni 2007 Jeg ønsker å bruke onmousemove for å kjøre en funksjon fortløpende, og når man klikker med musa skal man kunne slå av og på det at onmousemove "lytter" etter musebevegelser. Hvordan bør jeg gjøre dette? Lenke til kommentar
DemoniZer Skrevet 14. juni 2007 Del Skrevet 14. juni 2007 Først tar du onmousemove-scriptet og koder dette som du vil, implementer en onmousedown som setter det hele på pause. Lenke til kommentar
magicgunnar Skrevet 14. juni 2007 Forfatter Del Skrevet 14. juni 2007 Først tar du onmousemove-scriptet og koder dette som du vil, implementer en onmousedown som setter det hele på pause. 8859727[/snapback] Hva er koden for å "pause" et script / event? Lenke til kommentar
DemoniZer Skrevet 14. juni 2007 Del Skrevet 14. juni 2007 Jeg tenkte vel på setTimeout, men vet ikke om det vil fungere.. Lenke til kommentar
LostOblivion Skrevet 14. juni 2007 Del Skrevet 14. juni 2007 (endret) Hvis det sendes et event til en funksjon, kan du "override" denne funksjonen ved å la funksjonen returnere false. F eks. document.onmousedown = function(e) // bytt ut "document" med det objektet du vil arbeide med { return false; } Nå vil det virke som om brukeren aldri klikket på musa. Samme for lenker i HTML. a href="javascript: return false;" href="#">Du vil ikke trykke her, derfor har vi deaktivert lenken.</a> Mer konkret. Prøver du å lage en slags drag n drop implementasjon? Du kan "skru av og på" bevegelse med musa ved å gjøre f eks sånn her, eller liknende. mouseMoveOn = true; document.onmousedown = function(e) // bytt ut "document" med det objektet du vil arbeide med { mouseMoveOn = !mouseMoveOn; } document.onmousemove = function(e) // bytt ut "document" med det objektet du vil arbeide med { if (!mouseMoveOn) return false; // hva enn du vil gjøre i onmousemove her... } Men jeg tror ikke i seg selv at det går an å skru av det at en event sendes, men du kan som her gjøre det i funksjonsuttrykket for den gjeldene eventhandleren. OT: DemoniZer, sikker på at log og ikke ln av e er det samme som nevnt? Kunne ikke dy meg. Endret 14. juni 2007 av LostOblivion Lenke til kommentar
DemoniZer Skrevet 15. juni 2007 Del Skrevet 15. juni 2007 Forstår du ikke kunne gi deg.. Skylder på at jobben snart var ferdig Godt innlegg forresten. Lenke til kommentar
LostOblivion Skrevet 15. juni 2007 Del Skrevet 15. juni 2007 (endret) Kan si at jeg prøvde ut scriptet selv. Nå vet jeg med sikkerhet at det funker... Glemte bare at det var onmousedown eventhandleren til museklikk het og ikke onmouseclick, som jeg skrev opp i starten... Tenkte nemlig på at taggen i HTML for å hentyde til museklikk er onclick... Så onclick og onmousedown er det samme, eller? Endret 15. juni 2007 av LostOblivion Lenke til kommentar
LostOblivion Skrevet 15. juni 2007 Del Skrevet 15. juni 2007 (endret) Klikk for å se/fjerne innholdet nedenfor <html> <head> <title> Drag N Drop </title> <script> var mouseMoveOn, windowHandle, windowStartX, windowStartY, windowEndX, windowEndY; window.onload = function() { mouseMoveOn = false; windowHandle = document.getElementById("window"); } document.onmousedown = function(e) { mouseMoveOn = !mouseMoveOn; windowHandle.style.display = "block"; windowStartX = windowEndX = e.pageX; windowStartY = windowEndY = e.pageY; drawWindow(); } document.onmouseup = function(e) { mouseMoveOn = !mouseMoveOn; windowHandle.style.display = "none"; } document.onmousemove = function(e) { if (!mouseMoveOn) return false; windowEndX = e.pageX; windowEndY = e.pageY; drawWindow(); } function drawWindow() { if (windowEndX < windowStartX) { windowHandle.style.left = windowEndX + "px"; windowHandle.style.width = windowStartX - windowEndX + "px"; } else { windowHandle.style.left = windowStartX + "px"; windowHandle.style.width = windowEndX - windowStartX + "px"; } if (windowEndY < windowStartY) { windowHandle.style.top = windowEndY + "px"; windowHandle.style.height = windowStartY - windowEndY + "px"; } else { windowHandle.style.top = windowStartY + "px"; windowHandle.style.height = windowEndY - windowStartY + "px"; } } </script> <style> div#window { position: absolute; display: none; border: 1px solid #39B; background: #6CF; } </style> </head> <body> <div id="window"></div> </body> </html> Kunne ikke dy meg... (Igjen...) Endret 15. juni 2007 av LostOblivion Lenke til kommentar
magicgunnar Skrevet 18. juni 2007 Forfatter Del Skrevet 18. juni 2007 Tusen takk for omfattende svar! Det hjalp veldig. Men det er en liten ting jeg lurer på i forlengelsen av problemet. Når jeg bruker e.pageX og e.pageY så fungerer dette utmerket i FF, men ikke i IE, her har jeg måttet bruke: event.x og event.y Selv om det går greit å bruke to forskjellige notasjoner og sjekke nettleseren så synes jeg dette er litt tungvindt. Finnes det en notasjon for å finne hvor musepekeren er, som er lik i IE og FF? Lenke til kommentar
LostOblivion Skrevet 18. juni 2007 Del Skrevet 18. juni 2007 Det er en av tingene som er litt tricky med å jobbe med et scriptingspråk som JavaScript. Koden blir tolket forskjellig i forskjellige nettlesere på noen områder. Et av områdene er hvor musekordinatene blir lagret. IE bruker [eventobjekt].x og Mozilla bruker [eventobjekt].pageX. Men du kan jo gjøre sånn her. document.onmouseover = function(e) { mouseXPos = e.x || e.pageX; mouseYPos = e.y || e.pageY; } Hvis e.x eksisterer (IE), vil den bli brukt, hvis e.pageX eksisterer (Mozilla), vil den bli brukt. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå