Gå til innhold

Hvordan aktivere og deaktivere en event


Anbefalte innlegg

Videoannonse
Annonse

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? :p Kunne ikke dy meg. :roll:

Endret av LostOblivion
Lenke til kommentar
:p 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? :eek: Endret av LostOblivion
Lenke til kommentar

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...) :wallbash::thumbs:

Endret av LostOblivion
Lenke til kommentar

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

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. :thumbup:

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...