Pb de compatibilité

DTiGDB Messages postés 5 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007 - 1 oct. 2007 à 15:03
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 17 oct. 2007 à 20:17
Bonjour à toutes et à tous !
Je suis débutant dans le monde de la programmation web.
J'ai essayé de faire un menu sympa en m'inspirant d'autres sources.
Le problème est que celui ci fonctionne impec sur IE7, Opera 9.23 et Maxthon 2.0 mais ne s'affiche pas sous FF2.0, Netscape 7.1 et Safari 3.0 quiq sont mes navigateurs tests.
Voici le script si vous pouvez me donner un coup de main.... Merci
<script type="text/javascript">

var pos;

var ra = 250; // Largeur du mouvement

var rb = -150; // Hauteur du mouvement

var pi = Math.PI;

var inc = pi / (-300); // Vitesse de rotation
var isNS (navigator.appName "Netscape" && parseInt(navigator.appVersion) >= 4);

var objets;

var lien1 = (isNS) ? document.lien1 : document.all.lien1.style;

$Chaine = '';

for ($CptLien=2;$CptLien<$NbLien+1;$CptLien++)

{

var lien'.$CptLien.' = (isNS) ? document.lien'.$CptLien.' : document.all.lien'.$CptLien.'.style;

$Chaine .= ', lien'.$CptLien;

}

objets = new Array(lien1'.$Chaine.');

pos = new Array();

pos[0] = 0;
for (var i 1; i < objets.length; i++) {pos[i] parseFloat(pos[i - 1] + ((2 * pi) / objets.length));}

function rotateObjets()

{

for (var i = 0; i < pos.length; i++)

{

pos[i] += inc;

objets[i].left = (ra * Math.cos(pos[i])) + 320; // Position du centre de rotation sur l'axe X

objets[i].top = (rb * Math.sin(pos[i])) + ((document.documentElement.clientHeight - 250) / 2); // Position du centre de rotation sur l'axe Y

objets[i].visibility = "visible";

}

rotateTimer = window.setTimeout("rotateObjets()", 30);

}

rotateObjets();

</script>

11 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
1 oct. 2007 à 15:42
Bonjour,

    à priori $variable, c'est du php ?
        et comment on sait ce quelles contiennent ces variables ?
        donne nous la page générée, pas le php.
       ( un extrait ! ce qu'il faut, pas plus , mais le nécesssaire ! )

    en général, c'est du à la manière d'adresser les champs.
       met des ID et gère avec document.getElementById("les id").
    après :








o~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o 
| Avec | et mieux : <label style="color: rgb(0, 128, 0);">Télécharger</label> | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">FireFox</label> |regarder la "console d'erreurs" | FireBug
| | Outils / Console d'erreurs | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style= "color: rgb(128, 0, 0);">Internet </label>|activer le deboggage : utils/options I le Debogger IE | 
| <label style ="color: rgb(128, 0, 0);">Explorer</label>| dans la liste, sous "Navigation" : décocher | | 
| | ° Afficher une notification de chaque erreur de script | | 
| | ° Désactiver le débogage de Scripts (autres applications)| | 
| | ° Désactiver le débogage de Scripts (Internet Explorer) | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">K-Meleon</label> |regarder la "console d'erreurs" | | 
| | Outils / Console d'erreurs | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style= "color: rgb(128, 0, 0);">Opera</label> |regarder la "console d'erreurs" | | 
| | utils / A sole d'erreurs | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style ="color: rgb(128, 0, 0);">Safari</label> | | | 
o~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o

pour safari j'aimerais d'ailleurs avoir, quelques infos pour debugger...








<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />

                            en général, c'est totalement absurde de généraliser.
0
DTiGDB Messages postés 5 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
1 oct. 2007 à 15:53
Oui pardon pour la syntaxe
J'ai lié le script à ma base via du PHP !
En fait, il s'agit d'un script qui permet de créer un menu flottant qui décrit une ellipse autour d'un axe.
Voici donc la page générée par le code :

          

           

             

                [gamme.php?rubriq=2&gamme=8
                 
                 
Aspirateur
                ]
             

             

                [gamme.php?rubriq=2&gamme=5
                 
                 
Congélateur
                ]
             

             

                [gamme.php?rubriq=2&gamme=7
                 
                 
Cuisson
                ]
             

             

                [gamme.php?rubriq=2&gamme=6
                 
                 
Encastrable
                ]
             

             

                [gamme.php?rubriq=2&gamme=1
                 
                 
Lave linge
                ]
             

             

                [gamme.php?rubriq=2&gamme=3
                 
                 
Lave vaisselle
                ]
             

             

                [gamme.php?rubriq=2&gamme=10
                 
                 
Petit électro-ménager
                ]
             

             

                [gamme.php?rubriq=2&gamme=4
                 
                 
Réfrigérateur
                ]
             

             

                [gamme.php?rubriq=2&gamme=2
                 
                 
Sèche linge
                ]
             

             

                [gamme.php?rubriq=2&gamme=9
                 
                 
Siège
                ]
             

              <script type="text/javascript">
                var pos;
                var ra = 250;
                var rb = -150;
                var pi = Math.PI;
                var inc = pi / (-300);                var isNS (navigator.appName "Netscape" && parseInt(navigator.appVersion) >= 4);
                var objets;
                var lien1 = (isNS) ? document.lien1 : document.all.lien1.style;
                var lien2 = (isNS) ? document.lien2 : document.all.lien2.style;
                var lien3 = (isNS) ? document.lien3 : document.all.lien3.style;
                var lien4 = (isNS) ? document.lien4 : document.all.lien4.style;
                var lien5 = (isNS) ? document.lien5 : document.all.lien5.style;
                var lien6 = (isNS) ? document.lien6 : document.all.lien6.style;
                var lien7 = (isNS) ? document.lien7 : document.all.lien7.style;
                var lien8 = (isNS) ? document.lien8 : document.all.lien8.style;
                var lien9 = (isNS) ? document.lien9 : document.all.lien9.style;
                var lien10 = (isNS) ? document.lien10 : document.all.lien10.style;
                objets = new Array(lien1, lien2, lien3, lien4, lien5, lien6, lien7, lien8, lien9, lien10);
                pos = new Array();
                pos[0] = 0;                for (var i 1; i < objets.length; i++) {pos[i] parseFloat(pos[i - 1] + ((2 * pi) / objets.length));}
                function rotateObjets()
                {
                  for (var i = 0; i < pos.length; i++)
                  {
                    pos[i] += inc;
                    objets[i].left = (ra * Math.cos(pos[i])) + 320;
                    objets[i].top = (rb * Math.sin(pos[i])) + ((document.documentElement.clientHeight - 250) / 2);
                    objets[i].visibility = "visible";
                  }
                  rotateTimer = window.setTimeout("rotateObjets()", 30);
                }
                rotateObjets();
              </script>
           

         

Merci pour tout
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 oct. 2007 à 16:20
j'insiste. regarde la console d'erreurs, et mieux télécharge firebug.
        ( pour IE même remarque )
    tu vois qu'il rale sur objets[i].left   en disant "indéfini"
    et si tu regardes (avec un alert) document.lien1 : c'est indéfini pour FF!
    IE remplace le name par l'ID s'il n'existe pas. pas FF.
je disais...généralement... utiliser document.getElementById("lien1")
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
DTiGDB Messages postés 5 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
1 oct. 2007 à 16:50
Ok merci beaucoup, je teste et je te tiens au courant !
Sinon pour Safari, il existe un outil pratique : le "debug menu". Safari dispose en standard d'une console façon firebug, mais elle se cache dans le menu débug qui n'est pas activé par défaut.
Pour activer ce menu tu peux suivre les étapes suivantes :
<li>Installer le safari enhancer : http://www.celestialfrontiers.com/safari_enhancer.php</li><li>Cocher la case d'activation du débugger Safari
</li><li>Relancer Safari
</li><li>Dans le menu debug, tu peux afficher la console javascript
</li><li>Pour entrer un message dans cette console, il faut faire console.log("toto")</li>Voilà, j'espère que j'ai pu t'aider à mon tour
0

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
1 oct. 2007 à 18:35
merci pour le lien.
je ne connais que très mal Safari et je ne savais pas comment faire.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 oct. 2007 à 10:42
dommage pour le lien donné : ne sera pas maintenu,
et surtout uniquement sur MAC, si je ne m'abuse...
si quelqu'un à d'autres données ?
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
3 oct. 2007 à 09:18
Il est possible de télécharger Safari dans sa version Béta 3 (windows et mac) sur http://www.apple.com/safari/download/

Cependant, il  n'est pas exempt de bugs...
0
DTiGDB Messages postés 5 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
3 oct. 2007 à 16:23
Bonjour à tous,
Navré Bultez pour cette mauvaise route ...

Navré aussi de revenir à la charge concernant mon problème mais dans le debuggeur, la seule erreur répertoriée est celle sur document.documentElement.clientHeight qui semble t il n'est pas une instruction reconnue par FF.
A ce propos, qu'elle est l'instruction compatible ?
Sinon, si je remplace ce redimensionnement par une valeur fixe, rien ne s'affiche à l'écran.

Qui peux m'aider ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 oct. 2007 à 10:01
salut XTremDuke,
    oui, oui, j'ai déjà téléchargé safari, et il fonctionne plustôt bien d'ailleurs,
    ma question était sur les possibilités de déboggage.
DTiDB
    à priori, cette instruction doit passer, il y a autre chose.
    si tu ne parviens à rien, met nous la page en cause ( enfi, un petit extait
        et pas le php hein ! ), comme tu as du faire des modifs par rapport à la 1ère...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
DTiGDB Messages postés 5 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
17 oct. 2007 à 19:55
Salut tout le monde, me revoilà toujours avec le même problème.
J'avais mis ce point en suspend car j'en avais marre de me prendre la tête dessus mais j'aimerais quand même avoir la solution ...
Ci joint une page entière toute bête avec le code de ce fameux menu en rotation.
Je rappelle le problème, il fonctionne sous IE7 mais pas sous FF.
Objectif du code : Faire tourner des div autour d'un axe

<html>
<head>
<style>
.lien    {position:absolute;left:0px;top:0px;width:40px;height:40px;visibility:hidden;z-index:3; }
</style>
</head>

[url1 ]

[url2 ]

[url3 ]

[url4 ]

[url5 ]

[url6 ]

<SCRIPT LANGUAGE = "JavaScript">
var pos;
var ra = 100;
var rb = 60;
var pi = Math.PI;
var inc = pi / 180;var isNS (navigator.appName "Netscape" && parseInt(navigator.appVersion) >= 4);
var objets;
var ob1 = (isNS) ? document.getElementById("ob1") : document.getElementById("ob1").style;
var ob2 = (isNS) ? document.getElementById("ob2") : document.getElementById("ob2").style;
var ob3 = (isNS) ? document.getElementById("ob3") : document.getElementById("ob3").style;
var ob4 = (isNS) ? document.getElementById("ob4") : document.getElementById("ob4").style;
var ob5 = (isNS) ? document.getElementById("ob5") : document.getElementById("ob5").style;
var ob6 = (isNS) ? document.getElementById("ob6") : document.getElementById("ob6").style;
var objets;
objets = new Array(ob1, ob2, ob3, ob4, ob5, ob6);
pos = new Array();
pos[0] = 0;
for (var i = 1; i < 6; i++)
{
  pos[i] = parseFloat(pos[i - 1] + ((2 * pi) / objets.length));
}
function rotateObjets()
{
  for (var i = 0; i < pos.length; i++)
  {
    pos[i] += inc;
    objets[i].left = (ra * Math.cos(pos[i])) + 159;
    objets[i].top = (rb * Math.sin(pos[i])) + 94;
    objets[i].visibility = "visible";
  }
  rotateTimer = window.setTimeout("rotateObjets()", 30);
}
rotateObjets();
</SCRIPT>

</html>
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
17 oct. 2007 à 20:17
Bonjour,
Bizarre ta façon d'aborder tes variables ob1 ....
écrit simplement




var ob1 = document.getElementById("ob1").style;




conseil rajoutes les unité à
objets[i].left = (ra * Math.cos(pos[i])) + 159 +"px";
idem pour top, pour une meilleur compatibilité

 
 
 




;0)
0
Rejoignez-nous