Mon script ne fonctionne pas avec HTML Strict

Fermé
aurelscorp - 15 déc. 2007 à 21:03
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 23 déc. 2007 à 17:04
Bonjour,

Plus précisement, seulement sous Firefox et Safari.
En effet le script (chute de flocons de neige) fonctionnait bien sous les 3 navigateurs (explorer+firefox+safari)
mais une fois que j'ajoute l'en-tete : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Il ne fonctionne plus sous Firefox et Safari (donc seulement sous explorer), or je veux que mon futur site soit compatible avec
ces trois grands navigateurs.

En conclusion l'erreur ne peut venir que du script ou de sa position (car pour contourner le probleme je peut placer le script avant le <!DOCTYPE...> ) dans le code htm mais je n'aime pas cette solution. Quelqu'un connait t'il une meilleure solution ?



PS: J'ai bien ajouté l'attribut "type" à <script> // <script type="text/javascript" src="scripts/chuteflocons.js"> </script>
enfin je debute en html/CSS/PHP/Javascript.



Voici le script en détail :
----------------------------------------------------------------------------------------------------------------------------------------------------------------


// Nombre de flocons de neige
var snowmax=60

// Plage de couleur pour les flocons
var snowcolor=new Array("#aaaacc","#ddddFF","#ccccDD")

// Polices utilisées
var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS")

//Lettre génératrice
var snowletter="*"

// Vitesse de chute
var sinkspeed=1

// Taille max de vos snowflaxes
var snowmaxsize=18

// Taille min de vos snowflaxes
var snowminsize=10

// Zone de chute
var snowingzone=1

// Fin de la config



//Debut du script
var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array();
var crds=new Array();
var lftrght=new Array();
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=ie5||ns6||opera

function randommaker(range) {
rand=Math.floor(range*Math.random())
return rand
}

function initsnow() {
if (ie5 || opera) {
marginbottom = document.body.clientHeight
marginright = document.body.clientWidth
}
else if (ns6) {
marginbottom = window.innerHeight
marginright = window.innerWidth
}
var snowsizerange=snowmaxsize-snowminsize
for (i=0;i<=snowmax;i++) {
crds[i] = 0;
lftrght[i] = Math.random()*15;
x_mv[i] = 0.03 + Math.random()/10;
snow[i]=document.getElementById("s"+i)
snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
snow[i].size=randommaker(snowsizerange)+snowminsize
snow[i].style.fontSize=snow[i].size
snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
snow[i].sink=sinkspeed*snow[i].size/5
if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)
snow[i].style.left=snow[i].posx
snow[i].style.top=snow[i].posy
}
movesnow()
}

function movesnow() {
for (i=0;i<=snowmax;i++) {
crds[i] += x_mv[i];
snow[i].posy+=snow[i].sink
snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i]);
snow[i].style.top=snow[i].posy

if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
snow[i].posy=0
}
}
var timer=setTimeout("movesnow()",50)
}

for (i=0;i<=snowmax;i++) {
document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}
if (browserok) {
window.onload=initsnow
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------
A voir également:

1 réponse

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
23 déc. 2007 à 17:04
salut,

teste ton code dans le validateur du W3C, il y a peut être un problème de validité.
0