Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alisson Rodrigues

Adicionar evento ao onclick de um link

Recommended Posts

Fala galera! Tenho a função abaixo que serve pra adicionar um evento a um determinado elemento:

 

var Evento = {	add: function(obj, evType, fn) {		if (obj.addEventListener) {			obj.addEventListener(evType, fn, false);			return true;		} else if (obj.attachEvent) {			var r = obj.attachEvent("on" + evType, fn);			return r;		} else {			return false;		}	}}

Você passa como parâmetros: um objeto (o elemento afetado), tipo de evento (click, mouseover, etc) e o que acontece (funções a chamar, etc).

 

Eu tenho um <a> com um link qualquer. Eu adiciono um evento click a esse elemento pra ser chamada uma outra função, eu faço assim:

 

Evento.add(document.getElementById('idDoLink'),'click',function () { chamarfuncao() } );

Funciona! Porém, ao mesmo tempo que a função é chamada, o link também é executado, e acaba indo pra página do link. Se eu adicionasse ao onclick normalmente um 'return false' fucionaria, mas pelo addEventListener não funciona, pq se eu passar como referência uma função e dar 'return false', vai ser entendido como 'return false' pra função e não pro link, por exemplo:

 

Evento.add(document.getElementById('idDoLink'),'click',function () { chamarfuncao(); return false; } );

Continua indo pra outra página. Alguém tem alguma outra solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai ter de trocar o link no onload da página para não interferir na sua função.

 

function limpaLinks() {  var links = document.getElementById("meuMenu").getElementsByTagName("a");  for (var i = 0; i < links.length; i++)	links[i].href = "#" + links[i].href;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é Fleury, o problema é que não posso fazer isso. Na verdade essa função do onclick nem sempre é executada, algumas vezes ela deve falhar, sendo assim ela deve seguir o link. Portanto, eu precisaria mesmo que no caso de a função funcionar o link não funcionasse, como eu disse ali, se colocar um return false funciona, o problema é "como colocar?"... Vlw mesmo assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas veja vem, vai ser muito dificil arrumar uma solução pra isso dessa forma...quando se usa o addEventListener ou o attachEvent, você trabalha no escopo do windowquando você descreve a ação no atributo onclick do elemento html, você trabalha no escopo do elementoOu seja:return em addEventListener/attachEvent retorna resposta para windowreturn em a->onclick retorna resposta para aacho que você vai enfrentar um dilema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, na verdade eu já consegui fazer de outra maneira que funciona. Eu verifico se existe já algum evento no onclick com getAttribute e tal, e adiciono um novo evento com atrbuição normal (=) e coloco junto um eval com o valor retornado pelo getAttribute. Funciona, porém eu achei que ficou gambiarra demais, por isso eu estava estudando fazer a mesma coisa com addEventListener e attachEvent. De qualquer maneira, agradeço pela ajuda, pelo menos deu pra ver que realmente não dá pra fazer hehe. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tem muito tempo desse post, mais estava tentando resolver o mesmo problema, e achei uma solução mais facil.

 

Basta adicionar as seguintes linhas na função que é executado no onclick do elemente:

CODE
function onClick(event){

// seu codigo

event.preventDefault();

return false;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.