JeuWeb - Crée ton jeu par navigateur
[Résolu] Refresh après traitement d'une fonction, incomprehensible - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Refresh après traitement d'une fonction, incomprehensible (/showthread.php?tid=2719)

Pages : 1 2


[Résolu] Refresh après traitement d'une fonction, incomprehensible - Kassak - 08-07-2008

Je suis en face d'un problème qui est en train de me rendre complètement fou °_°', on a longtemps essayé de le régler avec emaia jusqu'à très tard hier, aucun effet, j'ai continué un bon moment, aujourd'hui pareil, même un admin d'un autre jeu sur le net a essayé et toujours rien...

(Ça va faire 3 posts de moi en quelques jours, désolé hin?xD)

Donc voila le problème, après avoir fait ( avec emaia donc ), un script de déplacement en ajax pour ma map, on s'est aperçu qu'il y avait un comportement bizarre, il marche une fois sur 2, et surtout refresh de toute la page ensuite.

On a alors réduit le script à ça :

Code PHP :
<?php 
<SCRIPT language="JavaScript">

// Deplacement d'un perso. sur la carte
function move(x,y,map)
{
document.getElementById("map_test").innerHTML = "DEBUG";
}

</
script>

Qui devrait changer le contenu de la div map_test par DEBUG, à l'aide d'un évènement onclick :

Code PHP :
<?php 
onclick
="javascript:move(<?php echo $x; ?>,<?php echo $y; ?>,<?php echo $map; ?>)"


Et là où c'est pétage de plomb, on clique, on voit le debug s'afficher, et la refresh de toute la page....

Après des heures et des heures dessus ( 3 cerveaux différents quand même ! ), impossible de savoir d'où vient ce co***rd de refresh.

J'ai essayé de supprimer du FTP directement tous mes scripts en JS, j'ai essayé de virer tout ce qui pourrait peut être être la cause, aucune effet, j'ia isolé tous les scripts sur une autre page vierge, toujours pareil...

Je ne sais plus où chercher, il y a toujours un refresh après le traitement de CETTE fonction, ça ne me l'avais jamais fait avant, si vous avez des idées ou quelque chose, ca m'évitera de commencer à m'arracher mes dreads ( car ça fait un peu mal quand même.... )


RE: Refresh après traitement d'une fonction, incomprehensible - Kassak - 08-07-2008

....

J'en ai marre de péter un cable sur des problèmes à la con comme ça, j'ai bien sur retourner tout mon code, foutu un gros bordel, sans griller que j'avais foutu ce onclick sur une balise a et non sur le td...

En tout cas un grand merci, je crois que les deux autres cerveaux vont se marrer !!


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la con] - z3d - 08-07-2008

Prélude à tout à fait raison, il vaut mieux reculer d'un pas pour en faire plusieurs par la suite.

Ensuite, attention tout de même où tu places ce onclick, le fait qu'il soit sur une balise <a> ne doit en aucun cas provoqué un rafraichissement de ta page; vérifies que tu fournis bien un href="#" (simulation d'ancre).
Enfin, toujours a propos de ce onclick vérifies sur tous les navigateurs car IE laisse à désirer à ce niveau là... Malheureusement.


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la c - Kassak - 08-07-2008

Dans mon cas, le a permettait de rendre une cellule d'un tableau cliquable ( en gros <td><a onclick.....></a></td> ), pour le moment j'ai opté pour cette version : <a href=""><td onlick="...."></td></a>, l'évènement se déclenche bien, mais il n'y a pas la souris en forme de main (que j'aime bien xD), je vais d'abord tester ça sous différent navigateur/version, et en attendant, si vous voyez une solution plus efficace, n'hésitez pas Wink


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la con] - Harparine - 08-07-2008

Enfin, une solution encore plus propre serait d'utiliser un framework javascript du type jQuery : ça permet d'affecter des onclick à la volée en fonction des classes css, la classe !^^


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la con] - barst - 08-07-2008

De préférence, je ne préfère pas mettre d'évènements sur les balises a.
Sinon je crois que si tu finis ton onClick par un "return false;" ça évité le rechargement... ce souvenir date alors je peux me tromper.


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la con] - z3d - 08-07-2008

Après test sur différents naviguateurs :
Code PHP :
<?php 
<script type="text/javascript">
alert('page en chargement !');
</
script>

<
a href="#">Click</a>

Le # détermine une ancre sur la page, cela ne recharge aucunement la page.

Je n'ai pas parlé de rendre le script non intrusif car Kassak aurait commencé à se tirer les cheveux à en devenir chauve ^^


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la c - Kassak - 08-07-2008

Citation :Je n'ai pas parlé de rendre le script non intrusif car Kassak aurait commencé à se tirer les cheveux à en devenir chauve 34

Je veux bien parler optimisation, mais pas maintenant xD


RE: Refresh après traitement d'une fonction, incomprehensible [regle, probleme a la con] - Ter Rowan - 08-07-2008

justement, je me posais diverses questions sur la manière de coder le

"utilisateur clique sur machin pour lancer un javascript"

entre :

+ un <div> avec un onclick dans le gestionnaire d'événement
+ un <a href:#> avec un onclick dans le gestionnaire d'événement
+ un <a href:# onclick =blabla> donc le onclick dans la balise (c'est beurk hein ?)
+ un <a href=javascript(.....)> donc l appel de la fonction directement dans le href

Y a t il une seule solution propre? est ce que cela dépend du contexte ?


RE: [Résolu] Refresh après traitement d'une fonction, incomprehensible - Kassak - 08-07-2008

Prélude, je ne suis plus au début, mais plutôt à la fin du projet Wink

Je me mettrais en mode optimisation avant la sortie de la version bêta ou pendant pas avant.


Sinon, on est encore rester 2h de plus sur un problème d'affichage lors de la mise à jour de la div...allez pour vous faire rigoler, l'origine du problème était.....La balise a !

Et oui cette balise de m**** était la et ne servait à rien à part faire tout buguer, je me suis fait un plaisir de lui mettre un coup de touche Suppr partout où elle apparaissait, et me voila maintenant avec un script clean ( reste encore 2 3 bugs mais rien de méchant )