Manipulador De Eventos //Repositório JavaScript
Descrição
addEvent e removeEvent cross-browser.
Criado: 2005.08.13 - Modificado 2013.09.17
Criado: 2005.08.13 - Modificado 2013.09.17
Código (Download)
//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/geral/event-listener [rev. #6]
addEvent = function(o, e, f, s){
var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
r[r.length] = [f, s || o], o[e] = function(e){
try{
(e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
e.target || (e.target = e.srcElement || null);
e.keyValue = e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
}catch(f){}
for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
return e = null, !!d;
}
};
removeEvent = function(o, e, f, s){
for(var i = (e = o["_on" + e] || []).length; i;)
if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
return delete e[i];
return false;
};
Exemplo (Exemplo)
Clique em qualquer lugar.
<script type="text/javascript">
//<![CDATA[
var a = function(){
alert("Fun??o A");
}
var b = function(){
alert(this.name + this.message);
}
var c = function(){
removeEvent(document, "click", a);
removeEvent(document, "click", c);
alert("Fun??o C removeu a fun??o A e C do onclick");
}
var params = {message: " com par?metros", name: "Fun??o B"};
addEvent(document, "click", b, params);
//removeEvent(document, "click", b, params);
addEvent(document, "click", c);
addEvent(document, "click", a);
//]]>
</script>
Ajuda
Funções
- addEvent(object: Object, event: String, handler: Function(e: Event): Boolean, [scope: Object = object]): Boolean
-
Adiciona uma função que será disparada quando ocorrer determinado evento no objeto.
- object
- objeto que receberá o listener
- event
- nome do evento sem o prefixo "on" (click, mouseover, ...)
- handler
- função que será chamada quando o evento ocorrer, será enviado como argumento
para esta função o objeto de evento, que além das propriedades normais, *sempre* irá conter:
- target: objeto que gerou o evento
- keyValue: código do caractere em eventos de teclado
- stopPropagation: método para evitar a propagação do evento
- preventDefault: método para evitar que a ação default ocorra
- scope
- escopo (quem o "this" irá referenciar dentro do handler) que será usado quando a função for chamada, o default é o objeto no primeiro argumento
- removeEvent(object: Object, event: String, handler: function(e: Event): Boolean, [scope: Object = object]): Boolean
-
Remove um listener previamente adicionado em um objeto e retorna true em caso de sucesso.
- object
- objeto que recebeu o listener
- event
- nome do evento sem o prefixo "on" (click, mouseover, ...)
- handler
- mesma função que foi atribuida no addEvent
- scope
- escopo em que a função foi adicionada, caso você tenha fornecido um escopo diferente no addEvent, é necessário que você passe como parâmetro o mesmo objeto, caso contrário a remoção do evento não será realizada
Ranque (Votos: 182)
4.25