onclick não funciona em IE 8?!?

xuxaki

Power Member
Boas,
reparei agora que o evento onclick não funciona no IE 8. Já tentei mudar para onchange ou onmousedown mas nada funciona... :S

Alguém me sabe dizer como contornar isto?! O código em causa é o seguinte, onde a função que deveria ser chamada - loop - faz parte de uma chamada AJAX (que funciona perfeitamente em Chrome e Firefox, pra variar IE a dar problemas.....):
Código:
<input type="submit" value="Confirmar" onclick="loop('c1')" />
 
És capaz de ter mais sorte usando jQuery. Para além de que limpas um bocado a estrutura do site dessas coisas.

Pois, mas eu não estou minimamente familiarizado com jQuery, e também teria de alterar o site todo, o que não me aprece viável...
Mais alguma sugestão? :confused:
 
Tenta adicionar o ";" no fim da função, provavelmente não dá... mas tenta :P

Outro problema pode ser algum erro que tenhas na teu função loop, se puderes coloca a função aqui.
 
eu acho que o problema está no argumento da função... já tentei com o ; e ta na mesma.
Digo isto porque, com uma função vazia, tipo funcao(), sem argumento nenhum, não dá qualquer erro. Se passo uma string dá erro! Não to a passar a string correctamente?
Código:
onclick="loop('c1');"
 
Última edição:
Acho que o que devias fazer (se ainda não fizeste) é substituir temporariamente a tua função por um onclick="alert('teste')" com ou sem ;

Assim não só ficas a saber se o problema é da função ou do IE e ainda tiras a dúvida do ;
 
eu acho que o problema está no argumento da função... já tentei com o ; e ta na mesma.
Digo isto porque, com uma função vazia, tipo funcao(), sem argumento nenhum, não dá qualquer erro. Se passo uma string dá erro! Não to a passar a string correctamente?
Código:
onclick="loop('c1');"

O melhor é pores aí a função para dar uma vista de olhos.
 
Fiz o que o oldMan disse, e resultou! Ou seja, fiz:
Código:
onclick="alert('cenas');"
E funcionou a 100%. Fiz também um teste com uma função que recebia uma string e fazia alert dessa string, ou seja:
Código:
onclick="metodo('teste');"
[I]e no ficheiro .js tenho[/I]
function metodo(s){
  alert(s);
}
Tudo impecável... Mas com a minha função loop não funciona! >( Será por estar associada a um setInterval?! O meu código consiste no seguinte (actualmente para debug, claro :P):
Código:
[I]Quando se acede à página executa o seguinte método[/I]
function initLoop(){
  intervalLoop = window.setInterval(function(){loop()}, 2000);
}

function loop(id){
  alert(id);
}

Ou seja, de 2 em 2 segundos executa o loop, mas quando se carrega no tal input deve também executar este método. A única diferença entre as chamadas é que, do setInterval o argumento id é undefined e a partir do input recebe a tal string, no exemplo que dei c1.
Alguém? Se calhar vou tentar separar os métodos... fica o setInterval associado ao loop e crio outro para onclick... É só que são praticamente iguais, daí não ter criado dois, para não estar a replicar código à toa...
 
Última edição:
Bem pessoal, resolvi o problema dividindo a função em duas, apesar de serem praticamente iguais... E logo de seguida enfrentei outro problema... Consistia em obter dados enconsistentes da base de dados na chamada AJAX, ou seja, imaginem que tinha lá um campo qualquer a 3, entretanto passava a 4 mas (para variar) no IE teimava em apresentar 3!! O que acontece é que o IE8 tem um esquema de caching, e quando detecta um link igual num intervalo de X segundos devolve o mesmo resultado... Então o que fiz foi atribuir a cada chamada AJAX um ID recorrendo à função Math.random() e desta forma cada link é único ;)

De qualquer forma, obrigado a todos pela ajuda
 
Back
Topo