11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous! Ca fait un petit moment que je viens ici pour trouver des réponses... C'est presque toujours le cas, sauf aujourd'hui! Alors je me lance!

J'ai dans un questionnaire une image antiflood (generée en php). Si le code généré n'est pas lisible, je veux que l'utilisateur le renouvelle sans rafraichir la page (sinon il doit retaper toutes ses informations.)

Voici un extrait de mon code.

Contact.php

<div id="image_spam"><img  id="antiflood" src="anti_spam.php?name=cde&strlen=4" alt="anti-flood" name="antiflood" ></div>
<br><input value="Rafraichir le code" name="rafraich" type="button" onclick='refresh_antiflood()'>


Fonction JS:

voici les 2 solutions que j'ai testé:

Solution1-
function refresh_antiflood(){
var im1 = document.getElementById("image_spam");
im1.innerHTML='<img src="anti_spam.php?name=cde&strlen=4" alt="anti-flood" id="antiflood" name="antiflood">';}


Solution2-
function refresh_antiflood(){
var im2 = document.getElementById("antiflood");
im2.src='anti_spam.php?name=cde&strlen=4';}


Et là! Misère! ça marche très bien sur IE6, mais pas sur Firefox!!!! Smiley eek et je ne vois vraiment pas pourquoi?

Je me dis que ça peut etre un problème de synthaxe dans l'url de l'image (? pour passer des variables)

C'est comme ça depuis ce matin! et là je deviens dingue!

J'espere avoir été clair... Je ne suis pas un habitué des forums!
Merci d'avance!
Modifié par wormy (04 Jul 2008 - 21:27)
Bon, j'ai trouvé!

En fait, il ne faut pas que l'url de la future image soit identique à celle affichée.... Smiley ohwell

Donc, j'ai defini une variable "bidon", dans mon url qui pointe vers mon image générée par PHP:

ce qui donne:


function refresh_antiflood()
{
var nb= Math.floor(Math.random() * 30)+1; // Je definis une variable aléatoire...

var im1 = document.getElementById("image_spam");
var im2 = document.getElementById("antiflood");

//... et je l'attribue à la variable "bidon" dans mon url .
im1.innerHTML='<img src="anti_spam.php?var='+nb+'" alt="anti-flood" id="antiflood" onclick="refresh_antiflood()">';

}



Et là ça marche sur Firefox, Ie6 et Ie7!.. ouf! merci la p'tite bidouille!

A+
Faudrait avoir quelque chose de plus gros que 30 en nombre aleatoire

un Math.random() en brut ça fonctionne à merveille. Ton pb était simplement un problème de cache. Ce qui pour moi est tout naturel comme fonctionnement
En nombre aleatoire j'ai mis 30 au pif. Le but c'est qu'entre deux demandes de rafraichissement la variable ne soit pas la même (alors ça peut etre 30 ou 5000...). Après, que le problème de cache soit naturel ou pas ça je m'en fiche un peu. Je voulais juste trouver un truc pour que ça fonctionne. C'est une des rares fois où je suis embété avec ff...

Mais si tu as une meilleure idée pour eviter cette bidouille, je suis preneur! Smiley smile