Manipulador de Eventos v1.4 //Repositório JavaScript
Descrição
addEvent e removeEvent cross-browser.
Criado: 2005.08.13 - Modificado: 2005.11.20
Criado: 2005.08.13 - Modificado: 2005.11.20
Código ( Download )
//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/geral/event-listener [v1.4]
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 || (window.event ? (arguments = [].slice.call(arguments)).unshift(e = event) || 1 && e : {})).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
e.target || (e.target = e.srcElement || null);
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.apply ? c = a.apply(o, arguments) : (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 ( Ver Exemplo )
<h3>Click anywhere.</h3>
<script type="text/javascript">
//<![CDATA[
var a = function(){
alert("Function A");
}
var b = function(){
alert(this.name + this.message);
}
var c = function(){
removeEvent(document, "click", a);
removeEvent(document, "click", c);
alert("Function C removed the functions A and C from the onclick event");
}
var params = {name: "Function B called", message: " with parameters"};
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
- key: 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
Rank (91 votos)
4.03