Gestió d'esdeveniments¶
Esdeveniments del ratolí¶
Són aquells que reaccionen quan es fa alguna acció amb el punter o amb els botons del ratolí.
Tingueu en compte que...
Tot i que habitualment el botó principal és l'esquerre i el botó de menú contextual el dret, l'usuari els pot haver canviat a la seva configuració, per exemple si és esquerrà.
onclick¶
Detecta quan fem un clic amb el botó principal del ratolí sobre l'element que té l'esdeveniment associat.
document.getElementById( "element" ).onclick = function () {...}
La funció de retorn porta implícit un paràmetre que ens dóna informació de l'esdeveniment que s'ha produït.
Aquest paràmetre és opcional, i normalment s'anomena e per indicar que correspon a un esdeveniment (event), tot i que el nom és arbitrari.
Si el botó té un comportament per defecte associat, el podem cancel·lar invocant el mètode preventDefault d'aquest paràmetre.
document.getElementById( "element" ).onclick = function ( e )
{
e.preventDefault();
...
}
ondblclick¶
Detecta quan fem doble clic amb el botó principal del ratolí sobre l'element que té l'esdeveniment associat.
document.getElementById( "element" ).ondblclick = function () {...}
Igual que amb onclick, la funció de retorn porta implícit un paràmetre que ens dóna informació de l'esdeveniment que s'ha produït.
Tingueu en compte que...
En cas que un element tingui associats alhora els esdeveniments click
i dblclick
, en fer doble click es processaran tots dos, primer el click
i després el dblclick
.
oncontextmenu¶
Detecta quan fem clic amb el botó de menú contextual del ratolí sobre l'element que té l'esdeveniment associat.
document.getElementById( "element" ).oncontextmenu = function () {...}
La funció de retorn porta implícit un paràmetre que ens dóna informació de l'esdeveniment que s'ha produït.
Aquest paràmetre és opcional, i normalment s'anomena e per indicar que correspon a un esdeveniment (event), tot i que el nom és arbitrari.
Ens pot ser útil per evitar que es desplegui el menú contextual en fer clic amb el botó invocant el mètode preventDefault d'aquest paràmetre.
document.getElementById( "element" ).oncontextmenu = function ( e )
{
// Evitem que s'obri el menú contextual
e.preventDefault();
...
}
onmousedown | onmouseup¶
Detecten el moment en que es prem (mousedown
) o es deixa anar (mouseup
) qualsevol botó del ratolí sobre l'element que té l'esdeveniment corresponent associat.
La funció de retorn porta implícit un paràmetre que ens dóna informació de l'esdeveniment que s'ha produït.
Aquest paràmetre és opcional, i normalment s'anomena e per indicar que correspon a un esdeveniment (event), tot i que el nom és arbitrari.
Podem determinar amb quin botó s'ha fet clic llegint la propietat button de l'esdeveniment de retorn:
valor | botó |
---|---|
0 | botó principal |
1 | rodeta o botó central |
2 | botó de menú contextual |
Ordre dels esdeveniments en fer clic
Si fem doble clic sobre un element l'ordre en que es disparen els diferents esdeveniments és:
1. onmousedown
2. onmouseup
3. onclick
4. ondblclick
L'esdeveniment onclick
només té lloc per un element si ha rebut just abans un onmousedown
seguit d'un onmouseup
.
document.getElementById( "element" ).onmousedown = function (e) {
this.innerHTML = "Has pressionat el botó " + e.button;
}
onmousemove¶
Detecta el moment en que s'està movent el punter del ratolí pel damunt de l'element que té l'esdeveniment associat.
Podem determinar les coordenades del punter llegint les següents propietats de l'esdeveniment de retorn:
eix X | eix Y | posició |
---|---|---|
clientX | clientY | respecte a l'element |
pageX | pageY | respecte a la pàgina |
screenX | screenY | respecte a la pantalla (àrea visible) |
document.getElementById("element").onmousemove = function (e) {
this.innerHTML = "Coordenades: " + e.clientX + ", " + e.clientY;
}
onmouseover | onmouseout¶
Detecten el moment en que el punter de ratolí es situa sobre o surt de sobre l'element que té l'esdeveniment corresponent associat.
document.getElementById( "element" ).onmouseover = function () {...}
document.getElementById( "element" ).onmouseout = function () {...}
Els paràmetres target
i relatedTarget
ens donen informació d'on provenia el punter i a on ha anat a parar:
Per mouseover
event.target – És l'element al qual s'acosta el punter
event.relatedTarget – És l'element d'on prové el punter (passem de relatedTarget
a target
)
Per mouseout
event.target – És l'element que el punter ha abandonat
event.relatedTarget – És l'element que queda sota el punter un cop abandonat l'anterior (passem de target
a relatedTarget
).
document.getElementById(...).onmouseover = function (e) {
let elementActual = e.target
let elementAnterior = e.relatedTarget
}
document.getElementById(...).onmouseout = function (e) {
let elementAbandonat = e.target
let elementActual = e.relatedTarget
}