Fonctions compatibles IE, Safari, mais pas FireFox

Résolu
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 août 2008 - 25 août 2008 à 09:51
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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.

Merci d'avance :)

15 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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], <!--
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 août 2008 à 11:01
Salut,

Pour la class Box, je crois que c'est une API de boite modal...

Un petit extrait sera le bienvenue...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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.

Cordialement     Bul [mon Site] [M'écrire], <!--
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 août 2008 à 14:58
ch'tiot exemple

brut de fonderie hein !!

vaudrait mieux utiliser la poo sur ce coup là , et on peut
        largement améliorer ( doux euphémisme ! )

uniquement pour montrer qu'avec FF, ça baigne ( pas testé avec IE
        mais pas loin si ça ne fonctionne pas )

<!--\"#FBE7E7\"-->----

   
un

   
deux

   
trois

    <script>
        function deplace(quoi,t,l,plt,pll)
        {   quoi.style.top=parseInt(quoi.style.top,10)+plt+"px";
            quoi.style.left=parseInt(quoi.style.left,10)+pll+"px";
            if ( parseInt(quoi.style.top,10)>=t )    plt=0;
            if ( parseInt(quoi.style.left,10)>=l )   pll=0;
            if ( plt>0 && pll>0 ) setTimeout( function()
                                        { deplace(quoi,t,l,plt,pll); }, 500 );
        }
        deplace(document.getElementById("d1"),200,150,2,5);
        deplace(document.getElementById("d2"),350,180,8,3);
        deplace(document.getElementById("d3"),250,250,10,5);
    </script>

Cordialement        Bul     [mon Site]  [M'écrire], <!--
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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], <!--
3
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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) {
   
    this.Object = GetObject(DivId);
   
    if (this.Object) {
        this.CSS = GetCSS(this.Object);
          this.X = GetLeft(this.Object);
          this.Y = GetTop(this.Object);
        this.Left = MoveObjectLeft;
          this.Right = MoveObjectRight;
    }
    return this;
}

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.

Une version est disponible en visualisation sur http://talrashha.no-ip.org

Voilà, j'ai tout dis, merci à ceux qui arriveront jusqu'ici dans le post :)
0
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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.
0
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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], <!--
0
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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 );
0
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 août 2008
25 août 2008 à 15:39
Ca c'est fort ! T'as fait en 10 ligne le code que j'essaie de faire depuis 2 jour ^^

Je sais pas pourquoi mon code marche pas, mais le tiens a tout à fait l'air de me convenir.
Merci :)

Je teste et si c'est bon je coche résolu :)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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], <!--
0
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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...
0
talrasha Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 26 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.
0
Rejoignez-nous