Para un gran número de eventos que esto podría ayudar:
var element = document.getElementById("myId");
var myEvents = "click touchstart touchend".split(" ");
var handler = function (e) {
do something
};
for (var i=0, len = myEvents.length; i < len; i++) {
element.addEventListener(myEvents[i], handler, false);
}
actualización 06/2017:
Ahora que las nuevas características del lenguaje son más accesibles que podría simplificar la adición de una lista limitada de eventos que comparten un oyente.
const element = document.querySelector("#myId");
function handleEvent(e) {
// do something
}
// I prefer string.split because it makes editing the event list slightly easier
"click touchstart touchend touchmove".split(" ")
.map(name => element.addEventListener(name, handleEvent, false));
Si desea manejar un montón de eventos y tienen diferentes requisitos por oyente puede también pass an object la que la mayoría de la gente tiende a olvidar.
const el = document.querySelector("#myId");
const eventHandler = {
// called for each event on this element
handleEvent(evt) {
switch (evt.type) {
case "click":
case "touchstart":
// click and touchstart share click handler
this.handleClick(e);
break;
case "touchend":
this.handleTouchend(e);
break;
default:
this.handleDefault(e);
}
},
handleClick(e) {
// do something
},
handleTouchend(e) {
// do something different
},
handleDefault(e) {
console.log("unhandled event: %s", e.type);
}
}
el.addEventListener(eventHandler);
bien eso ayuda :) ¡gracias! – coiso
Advertencia: el evento no está disponible en la función de manejo. Solucioné este error https://pastebin.com/raw/Lrcdv1ws – higimo