1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

onclick não funciona em IE 8?!?

Discussão em 'Web Development' iniciada por xuxaki, 4 de Agosto de 2009. (Respostas: 11; Visualizações: 3133)

  1. xuxaki

    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')" />
     
  2. OldMan

    OldMan Power Member

    És capaz de ter mais sorte usando jQuery. Para além de que limpas um bocado a estrutura do site dessas coisas.
     
  3. xuxaki

    xuxaki Power Member

    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:
     
  4. K0mA

    K0mA Power Member

    Não será onClick
     
  5. Dkid

    Dkid Power Member

    Não é case sensitive!

    Vê se dá para aquilo que queres, fonte : http://www.webdeveloper.com/forum/showthread.php?t=204998
     
  6. skandal

    skandal Power Member

    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.
     
  7. xuxaki

    xuxaki Power Member

    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: 4 de Agosto de 2009
  8. ImAnAlcoholic

    ImAnAlcoholic Power Member

    eu trabalho mais com jQuery..
    mas se bem me lembro de javascript...
    nao devia ser:

    onclick="function(argument)"

    sem aspas no argumento?
     
  9. OldMan

    OldMan Power Member

    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 ;
     
  10. geoblast

    geoblast Power Member

    O melhor é pores aí a função para dar uma vista de olhos.
     
  11. xuxaki

    xuxaki Power Member

    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: 4 de Agosto de 2009
  12. xuxaki

    xuxaki Power Member

    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
     

Partilhar esta Página