talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008
-
25 août 2008 à 09:51
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008
-
26 août 2008 à 12:12
Bonjour à tous,
J'ai un souci, j'ai développé une paires de fonction pour faire se déplacer des éléments dans une page en JavaScript. Mon souci est que le chargement n'est pas fluide du tout du FireFox, mais fonctionne très bien sous Safari et IE...
Avant de vous embêter avec du code, est-ce qu'il y a des fonctions connues en Javascript qui sont à proscrire lors de l'utilisation de Firefox?
A noter que j'utilise la classe "Box" dans mes fonctions et une partie des méthodes associées.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 août 2008 à 09:57
bonjour,
>>est-ce qu'il y a des fonctions
connues en Javascript qui sont à proscrire lors de l'utilisation de
Firefox?
non... sauf celles exclusives IE, mais comme tudis que ça baigne avec Safari.
>> j'utilise la classe "Box"
je ne sais pas ce que c'est
Cordialement Bul [mon Site] [M'écrire], <!--
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 août 2008 à 12:27
>>Le but est de faire une fonction qui déplace un objet en fonction de son ID, d'un point A à un point B
tu trouveras de très nombreux exemples ( dont certains superbes ) sur CodesSources
regarde du coté des "Drag and Drop"
>>sur l'axe des abscisses
et même dans n'importe quelle direction.
comme tu sembles "lié" à un outil ( BOX qui doit probablement être complexe,
ça va être difficile de regarder si on ne connait pas )
le déplacement d'objet c'est "très simple" en soi, "il suffit"
de jouer avec la position de l'objet en fait.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 26 août 2008 à 10:01
je suis venu, j'ai rien vu, je suis vaincu....
1° reste des erreurs, avec FF par exemple :
__ Avertissement : Règle « at » non reconnue ou erreur d'analyse de la règle « @font-face ».
Fichier Source : http://talrashha.no-ip.org/style/style.css Ligne : 1
__ Avertissement : Une fin de valeur pour la propriété était attendue, mais « 0px » a été trouvé.
Erreur d'analyse de la valeur pour la propriété « border ». Déclaration abandonnée.
Fichier Source : http://talrashha.no-ip.org/style/style.css Ligne : 29
2° ça me semble s'afficher correctement et si on clique sur les "depop"
ça part sans problème...
c'est toujours le problème quand on va voir un site, que le questionneur connait
parfaitement et que nous on découvre
le plus simple c'est de faire un exemple ( extrait miminum de la page ) de
ce qui ne fonctionne pas. on peut tester, aider ( parfois ) à corriger....
Cordialement Bul [mon Site] [M'écrire], <!--
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008 25 août 2008 à 11:24
Salut,
Bon, ok, je me doutais qu'il n'y avais rien de toujours vrai ^^.
Donc, je présente un peu mon code :
Le but est de faire une fonction qui déplace un objet en fonction de son ID, d'un point A à un point B sur l'axe des abscisses.
Donc, dans un premier temps, j'utilise quelques fonctions pour récupérer les informations de l'objet (Je sais pas s'il y a des balises CODE sur ce forum... ;)):
function GetObject(MyID) {
return document.getElementById(MyID);
}
function GetCSS(MyObject) {
return MyObject.style;
}
function GetTop(MyObject) {
return (MyObject.offsetTop);
}
function GetLeft(MyObject) {
return MyObject.offsetLeft;
}
Ensuite, j'utilise deux fonctions pour déplacer l'objet d'un coté ou de l'autre :
function MoveObjectLeft(mystep) {
this.X -= mystep;
this.CSS.left=this.X;
}
function MoveObjectRight(mystep) {
this.X += mystep;
this.CSS.left=this.X;
}
Je définie ensuite un constructeur pour mon objet :
function CreateObject(DivId,MyObject) {
Je ne pense pas que le reste soit pertinent (mais n'hésitez pas à me le demander si nécessaire ^^). J'utilise un objet Box pour stocker un ensemble de variable utilisées pour savoir de combien de pixel déplacer mon objet à chaque itération.
Et j'appelle une fonction récursive terminale qui déplace mon objet de quelques pixels à chaque itération.
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008 25 août 2008 à 14:06
Re salut,
Bon, après mainte recherche, je suis arrivé à la conclusion que j'ai dû vous dire pas mal de bétise... et je pense ne pas être loin d'avoir cerné le problème.
Déjà, en fait je n'utilise plus d'objet compliqué, comme ça plus de problèmes. Ensuite, je crois que les fonctions que j'ai cité ci-dessus ne posent aucun problème. Le souci selon moi viens de l'appel récursif de la procédure... dont je ne connais pas le fonctionnement exacte :
this.ProcessId = setTimeout(this.name + '.start(0, "' + conteneur +'", ' + Direction + ', "'+ fin +'")', 1); L'appel se fait via la méthode setTimeout.
Je rappelle que je suis parti d'un code ne m'appartenant pas, et j'aimerai tout comprendre pour m'en faire une base. Je suis actuellement en train de faire quelques recherches sur cette fonction. Je crois (et détrompez moi dans le cas contraire) que cette méthode permet d'appeler une procédure après un certain temps (ici 1ms).
Ma question est la suivante :
sachant que j'associe un appel à 4 éléments de ma page, est-ce que mon manque de fluidité sous Firefox peut provenir de là?
>>tu trouveras de très nombreux exemples ( dont certains superbes ) sur CodesSources
regarde du coté des "Drag and Drop"
Je suis aussi en train de regarder cela, mais je préfèrerai reussir à faire un code par moi même... bien que je m'en inspirerai si nécessaire.
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008 25 août 2008 à 14:22
Re coucou,
J'apporte quelques précisions supplémentaire : ce que je souhaite faire est de déplacer un élément et son contenu (un
en l'occurrence), pour qu'il parte d'un position initiale définie par moi et atteigne une position d'arrivée en y allant progressivement et en fonction d'une vitesse paramétrable. Ainsi, le Drag'N Drop n'est pas la solution. Effectivement le problème se divise en 2 : La partie de déplacement de l'objet (qui n'est autre qu'un modification de la propriété Left ou Top de l'élement), mais aussi et surtout l'appel récurisif de la fonction de déplacement coordonnée avec le temps...
C'est ce second point qui a l'air de ne pas fonctionner...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 août 2008 à 14:24
>>sachant que j'associe un appel à 4 éléments de ma page,
>>est-ce que mon manque de fluidité sous Firefox peut provenir de là?
probablement pas... mais vas savoir....
tu as regardé la "console d'erreurs" ? vu ce qui ce passe avec FireBug ?
Cordialement Bul [mon Site] [M'écrire], <!--
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008 25 août 2008 à 14:38
Ben, oui. Et il n'y a pas d'erreur.
Je me demande si setTimeout peut être ralenti sous Firefox parce qu'il y a des arguments à la fonction, ou quelque chose du genre...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 août 2008 à 15:17
mon derneir message se perdit dans les méandres du web
ou celles de CodesSources.... ( ou j'ai posté ailleurs ? )
je disais: il fallait lire :
if ( plt>0 || pll>0 ) setTimeout( function()
{ deplace(quoi,t,l,plt,pll); }, 500 );
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 août 2008 à 17:05
ici le déplacement est obligatoirement de gauche à droite et de bas en haut...
à toi d'adapter ( si nécessaire ) si toutes les directions sont possibles
et de faire ça plus "proprement", POO....
Cordialement Bul [mon Site] [M'écrire], <!--
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008 25 août 2008 à 23:09
Salut,
Et voilà !
Alors, j'ai passé toute la soirée à coder une belle classe toute propre, faite que par mes soins, et basé sur le code ci-dessus... et
.... tadada... roulement de tambourg.... j'ai pas réussi à faire un truc qui marche.... enfin, si, tout fonctionne, mais de façon saccadée :'(
Je sais pas si le problème viens de mon code, ou bien si c'est parce que je fais des calculs plus compliqué que dans ta procédure... mais j'y arrive pas ! Après avoir tout repris à zéro, je suis arrivé au même stade.
Je sais plus quoi faire ^^
Si vous voulez jetter un coup d'oeil, le site se trouve sur http://talrashha.no-ip.org Après quelques tests, on vois clairement une dégradation des performances lorsque j'instancie 4 objets au lieu d'1... mais déjà pour 1 seul, on vois parfois des petits coup de lag...
talrasha
Messages postés14Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention26 août 2008 26 août 2008 à 12:12
Coucou,
Bon, ben je comprend rien du tout. De temps en temps, c'est fluide, sur même PC. J'ai un copain qui a testé sur un Mac et m'a dit que c'était fluide sur Safari comme sur FF3... Je vais quand même corriger les erreurs de CSS (je les avais pas vus, elles sont pas affichées par défaut :))
Faut que je trouve l'histoire du "at" qui pose problème, mais ça doit se trouver sur le net.