Probleme script qui ne marche que sous IE

Signaler
Messages postés
3
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
6 juin 2006
-
Messages postés
3
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
6 juin 2006
-
Bonjour à tous.
je m'inicie au javascript et le "petit" script que j'ai mis sur mon site ne marche que sous IE.

<script language= "JavaScript">//Couleurs
dCol='FFFFFF'; //Couleur de la date
fCol='#FFFF00'; //Couleur des chiffres de l'horloge
sCol='FFFFFF'; //Couleur des secondes
mCol='#80FFFF'; //Couleur des minutes
hCol='#80FFFF'; //Couleur des heures
ClockHeight=40;
ClockWidth=40;
ClockFromMouseY=0;
ClockFromMouseX=100;
//Noms de jours et de mois
d=new Array("DIMANCHE","LUNDI","MARDI","MERCREDI","JEUDI","VENDREDI","SAMEDI"); //Noms de jours
m=new Array("JANVIER","FÉVRIER","MARS","AVRIL","MAI","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"); //Noms des mois
date=new Date();
day=date.getDate();
year=date.getYear();
if (year < 2000) year=year+1900;
TodaysDate=" "+d[date.getDay()]+" "+day+" "+m[date.getMonth()]+" "+year;
D=TodaysDate.split('');
H='...';
H=H.split('');
M='....';
M=M.split('');
S='.....';
S=S.split('');
Face='1 2 3 4 5 6 7 8 9 10 11 12';
font='Arial';
size=1;
speed=0.6;
ns=(document.layers);
ie=(document.all);
Face=Face.split(' ');
n=Face.length;
a=size*10;
ymouse=0;
xmouse=0;
scrll=0;
props="";
props2="";
Split=360/n;
Dsplit=360/D.length;
HandHeight=ClockHeight/4.5
HandWidth=ClockWidth/4.5
HandY=-7;
HandX=-2.5;
scrll=0;
step=0.06;
currStep=0;
y=new Array();x=new Array();Y=new Array();X=new Array();
for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0}
Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();
for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0}
if (ns){
for (i=0; i < D.length; i++)
document.write('<layer name="nsDate'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props2+D[i]+'</center></layer>');
for (i=0; i < n; i++)
document.write('<layer name="nsFace'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props+Face[i]+'</center></layer>');
for (i=0; i < S.length; i++)
document.write('<layer name=nsSeconds'+i+' top=0 left=0 width=15 height=15><center> '+S[i]+' </center></layer>');
for (i =0; i < M.length; i++)
document.write('<layer name= nsMinutes'+i+' top=0 left=0 width=15 height=15><center> '+M[i]+' </center></layer>');
for (i =0; i < H.length; i++)
document.write('<layer name= nsHours'+i+' top=0 left=0 width=15 height=15><center> '+H[i]+' </center></layer>');
}
if (ie){
document.write('

');
for (i =0; i < D.length; i++)
document.write('
'+props2+D[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < n; i++)
document.write('
'+props+Face[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < H.length; i++)
document.write('
'+H[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < M.length; i++)
document.write('
'+M[i]+'
');
document.write('

')
document.write('

');
for (i=0; i < S.length; i++)
document.write('
'+S[i]+'
');
document.write('

')
}
(ns)?window.captureEvents(Event.MOUSEMOVE):0;
function Mouse(evnt){
ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;
xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
}
(ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;
function ClockAndAssign(){
time = new Date ();
secs = time.getSeconds();
sec = -1.57 + Math.PI * secs/30;
mins = time.getMinutes();
min = -1.57 + Math.PI * mins/30;
hr = time.getHours();
hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360;
if (ie){
Od.style.top=window.document.body.scrollTop;
Of.style.top=window.document.body.scrollTop;
Oh.style.top=window.document.body.scrollTop;
Om.style.top=window.document.body.scrollTop;
Os.style.top=window.document.body.scrollTop;
}
for (i=0; i < n; i++){
var F=(ns)?document.layers['nsFace'+i]:ieFace[i].style;
F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);
}
for (i=0; i < H.length; i++){
var HL=(ns)?document.layers['nsHours'+i]:ieHours[i].style;
HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll;
HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs);
}
for (i=0; i < M.length; i++){
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}
for (i=0; i < S.length; i++){
var SL=(ns)?document.layers['nsSeconds'+i]:ieSeconds[i].style;
SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll;
SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec);
}
for (i=0; i < D.length; i++){
var DL=(ns)?document.layers['nsDate'+i]:ieDate[i].style;
DL.top=Dy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll;
DL.left=Dx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180);
}
currStep-=step;
}
function Delay(){
scrll=(ns)?window.pageYOffset:0;
Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed);
Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed);
for (i=1; i < D.length; i++){
Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed);
Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed);
}
y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed);
x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed);
for (i=1; i < n; i++){
y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed);
x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed);
}
ClockAndAssign();
setTimeout('Delay()',20);
}
if (ns||ie)window.onload=Delay; </script>


sous firefox il m'affiche une erreur "event nor defined" ligne 124 dans la console javascript

4 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
B

onjour...

Tout d'abord Hard à lire le code mais bon...


et pour faire court ton code...
ns= (document.layers);
est trop restrictif et insuffisant



ns=(document.layers);
détecte la version 4 de NETSCAPE plus utilisé de nos jour ou alors...!




Personellement j'utilise...
  var DOM = (document.getElementById ? true : false);
  var IE  = (document.all && !DOM ? true : false);
  var NS4 = (document.layers ? true : false);
  var NAV_OK   = ( DOM || IE || NS4);  var NETSCAPE (navigator.appName "Netscape");




Ta fonction deviendrait...
function Mouse(evnt){
  if( NETSCAPE){
    ymouse =  evnt.pageY+ClockFromMouseY-window.pageYOffset ;
    xmouse =  evnt.pageX+ClockFromMouseX;
  }
  else{
    ymouse = event.y+ClockFromMouseY;
    xmouse = event.x+ClockFromMouseX;
  }
}



Bonne correction ...

;0)
Messages postés
3
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
6 juin 2006

tout d'abord je te remercie de te pencher sur mon cas, car le javascript je ne maitrise pas vraiment voir pas du tout.

ensuite j'ai essayé de faire les corrections que tu m'a indiqué mais cela ne marche toujours (je pense avoir fait une erreur)

voila ce que donne le script une fois "corrigé"

<script language="JavaScript">//Couleurs
dCol='FFFFFF'; //Couleur de la date
fCol='#FFFF00'; //Couleur des chiffres de l'horloge
sCol='FFFFFF'; //Couleur des secondes
mCol='#80FFFF'; //Couleur des minutes
hCol='#80FFFF'; //Couleur des heures
ClockHeight=40;
ClockWidth=40;
ClockFromMouseY=0;
ClockFromMouseX=100;
//Noms de jours et de mois
d=new Array("DIMANCHE","LUNDI","MARDI","MERCREDI","JEUDI","VENDREDI","SAMEDI"); //Noms de jours
m=new Array("JANVIER","F…VRIER","MARS","AVRIL","MAI","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"); //Noms des mois
date=new Date();
day=date.getDate();
year=date.getYear();
if (year < 2000) year=year+1900;
TodaysDate=" "+d[date.getDay()]+" "+day+" "+m[date.getMonth()]+" "+year;
D=TodaysDate.split('');
H='...';
H=H.split('');
M='....';
M=M.split('');
S='.....';
S=S.split('');
Face='1 2 3 4 5 6 7 8 9 10 11 12';
font='Arial';
size=1;
speed=0.6;
ns=(document.layers ? true : false);
DOM = (document.getElementById ? true : false);NETSCAPE (navigator.appName "Netscape");
ie=(document.all);
Face=Face.split(' ');
n=Face.length;
a=size*10;
ymouse=0;
xmouse=0;
scrll=0;
props="";
props2="";
Split=360/n;
Dsplit=360/D.length;
HandHeight=ClockHeight/4.5
HandWidth=ClockWidth/4.5
HandY=-7;
HandX=-2.5;
scrll=0;
step=0.06;
currStep=0;
y=new Array();x=new Array();Y=new Array();X=new Array();
for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0}
Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();
for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0}
if (NETSCAPE){
    ymouse =  evnt.pageY+ClockFromMouseY-window.pageYOffset ;
    xmouse =  evnt.pageX+ClockFromMouseX;
  }
  else{
    ymouse = event.y+ClockFromMouseY;
    xmouse = event.x+ClockFromMouseX;
  }
}
if (ie){
document.write('

');
for (i=0; i < D.length; i++)
document.write('
'+props2+D[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < n; i++)
document.write('
'+props+Face[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < H.length; i++)
document.write('
'+H[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < M.length; i++)
document.write('
'+M[i]+'
');
document.write('

')
document.write('

');
for (i=0; i < S.length; i++)
document.write('
'+S[i]+'
');
document.write('

')
}
(ns)?window.captureEvents(Event.MOUSEMOVE):0;
function Mouse(evnt){
ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;
xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
}
(ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;
function ClockAndAssign(){
time = new Date ();
secs = time.getSeconds();
sec = -1.57 + Math.PI * secs/30;
mins = time.getMinutes();
min = -1.57 + Math.PI * mins/30;
hr = time.getHours();
hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360;
if (ie){
Od.style.top=window.document.body.scrollTop;
Of.style.top=window.document.body.scrollTop;
Oh.style.top=window.document.body.scrollTop;
Om.style.top=window.document.body.scrollTop;
Os.style.top=window.document.body.scrollTop;
}
for (i=0; i < n; i++){
var F=(ns)?document.layers['nsFace'+i]:ieFace[i].style;
F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);
}
for (i=0; i < H.length; i++){
var HL=(ns)?document.layers['nsHours'+i]:ieHours[i].style;
HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll;
HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs);
}
for (i=0; i < M.length; i++){
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}
for (i=0; i < S.length; i++){
var SL=(ns)?document.layers['nsSeconds'+i]:ieSeconds[i].style;
SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll;
SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec);
}
for (i=0; i < D.length; i++){
var DL=(ns)?document.layers['nsDate'+i]:ieDate[i].style;
DL.top=Dy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll;
DL.left=Dx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180);
}
currStep-=step;
}
function Delay(){
scrll=(ns)?window.pageYOffset:0;
Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed);
Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed);
for (i=1; i < D.length; i++){
Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed);
Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed);
}
y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed);
x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed);
for (i=1; i < n; i++){
y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed);
x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed);
}
ClockAndAssign();
setTimeout('Delay()',20);
}
if (ns||ie)window.onload=Delay; </script>
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
B

onjour...

Tout d'abord au vue du code que tu proposes tu n'as pas placé les modif au bon endroit...
if (NETSCAPE){
    ymouse =  evnt.pageY+ClockFromMouseY-window.pageYOffset ;
    xmouse =  evnt.pageX+ClockFromMouseX;
  }
  else{
    ymouse = event.y+ClockFromMouseY;
    xmouse = event.x+ClockFromMouseX;
  }
}
Il fallait les mettre dans la fonction

function Mouse(evnt)



Quoi qu'il en soit ta source n'est pas compatible DOM donc pas FireFox...
...tu te retrouves avec tout un tas de
qui ont le "ID"
comment faire le distinguo quand le navigateur ne pocéde pas la notion de document.all...

Je crois malheuresement qu'il va falloir que tu mettes la main à la pâte...

;O))
Messages postés
3
Date d'inscription
vendredi 2 juin 2006
Statut
Membre
Dernière intervention
6 juin 2006

merci de votre contribution a mon probleme.
On vient de me corriger ce script et il marche a merveille sur tous les navigateurs que j'utilise, je reviendrais
vous voir quand je m'y connaitrais un peu plus pour essayer de comprendre le pourquoi du comment.

voici le code corrigé

<script language= "JavaScript">//Couleurs
dCol='FFFFFF'; //Couleur de la date
fCol='#FFFF00'; //Couleur des chiffres de l'horloge
sCol='FFFFFF'; //Couleur des secondes
mCol='#80FFFF'; //Couleur des minutes
hCol='#80FFFF'; //Couleur des heures
ClockHeight=40;
ClockWidth=40;
ClockFromMouseY=0;
ClockFromMouseX=100;
//Noms de jours et de mois
d=new Array("DIMANCHE","LUNDI","MARDI","MERCREDI","JEUDI","VENDREDI","SAMEDI"); //Noms de jours
m=new Array("JANVIER","FÉVRIER","MARS","AVRIL","MAI","JUIN","JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"); //Noms des mois
date=new Date();
day=date.getDate();
year=date.getYear();
if (year < 2000) year=year+1900;
TodaysDate=" "+d[date.getDay()]+" "+day+" "+m[date.getMonth()]+" "+year;
D=TodaysDate.split('');
H='...';
H=H.split('');
M='....';
M=M.split('');
S='.....';
S=S.split('');
Face='1 2 3 4 5 6 7 8 9 10 11 12';
font='Arial';
size=1;
speed=0.6;
ns=(document.layers);
ie=(document.all);
dom=(document.getElementById && !document.all);
Face=Face.split(' ');
n=Face.length;
a=size*10;
ymouse=0;
xmouse=0;
scrll=0;
props="";
props2="";
Split=360/n;
Dsplit=360/D.length;
HandHeight=ClockHeight/4.5
HandWidth=ClockWidth/4.5
HandY=-7;
HandX=-2.5;
scrll=0;
step=0.06;
currStep=0;
y=new Array();x=new Array();Y=new Array();X=new Array();
for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0}
Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();
for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0}

if (ns){
for (i=0; i < D.length; i++)
document.write('<layer name="nsDate'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props2+D[i]+'</center></layer>');
for (i=0; i < n; i++)
document.write('<layer name="nsFace'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props+Face[i]+'</center></layer>');
for (i=0; i < S.length; i++)
document.write('<layer name=nsSeconds'+i+' top=0 left=0 width=15 height=15><center> '+S[i]+' </center></layer>');
for (i =0; i < M.length; i++)
document.write('<layer name= nsMinutes'+i+' top=0 left=0 width=15 height=15><center> '+M[i]+' </center></layer>');
for (i =0; i < H.length; i++)
document.write('<layer name= nsHours'+i+' top=0 left=0 width=15 height=15><center> '+H[i]+' </center></layer>');
}

if (ie || dom){
document.write('

');
for (i =0; i < D.length; i++)
document.write('
'+props2+D[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < n; i++)
document.write('
'+props+Face[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < H.length; i++)
document.write('
'+H[i]+'
');
document.write('

');
document.write('

');
for (i=0; i < M.length; i++)
document.write('
'+M[i]+'
');
document.write('

')
document.write('

');
for (i=0; i < S.length; i++)
document.write('
'+S[i]+'
');
document.write('

')
}

(ns)?window.captureEvents(Event.MOUSEMOVE):0;
function Mouse(evnt){
ymouse = (ns || dom)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;
xmouse = (ns || dom)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
}

(ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;

function ClockAndAssign(){
time = new Date ();
secs = time.getSeconds();
sec = -1.57 + Math.PI * secs/30;
mins = time.getMinutes();
min = -1.57 + Math.PI * mins/30;
hr = time.getHours();
hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360;

if (ie||dom){
document.getElementById('Od').style.top=window.document.body.scrollTop;
document.getElementById('Of').style.top=window.document.body.scrollTop;
document.getElementById('Oh').style.top=window.document.body.scrollTop;
document.getElementById('Om').style.top=window.document.body.scrollTop;
document.getElementById('Os').style.top=window.document.body.scrollTop;
}
for (i=0; i < n; i++){
var F=(ns)?document.layers['nsFace'+i]:document.getElementById('ieFace'+i).style;
F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);
}
for (i=0; i < H.length; i++){
var HL=(ns)?document.layers['nsHours'+i]:document.getElementById('ieHours'+i).style;
HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll;
HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs);
}
for (i=0; i < M.length; i++){
var ML=(ns)?document.layers['nsMinutes'+i]:document.getElementById('ieMinutes'+i).style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}
for (i=0; i < S.length; i++){
var SL=(ns)?document.layers['nsSeconds'+i]:document.getElementById('ieSeconds'+i).style;
SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll;
SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec);
}
for (i=0; i < D.length; i++){
var DL=(ns)?document.layers['nsDate'+i]:document.getElementById('ieDate'+i).style;
DL.top=Dy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll;
DL.left=Dx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180);
}
currStep-=step;
}
function Delay(){
scrll=(ns||dom)?window.pageYOffset:0;
Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed);
Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed);
for (i=1; i < D.length; i++){
Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed);
Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed);
}
y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed);
x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed);
for (i=1; i < n; i++){
y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed);
x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed);
}
ClockAndAssign();
setTimeout('Delay()',20);
}
if (ns||ie||dom)window.onload=Delay; </script>