Script JS incompatible sur page aux normes W3C

Signaler
Messages postés
50
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
3 octobre 2008
-
Messages postés
50
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
3 octobre 2008
-
Bonjour,
Je réalise la nouvelle version de mon site actuelement et je m'arrache les cheveux avec un script que je trouve génial disponible sur Codes-sources, http://www.javascriptfr.com/codes/EFFET-DOCK-MAC-OS-VOS-MENUS_26334.aspx
En effet ce script marche si on ne défini pas de doctype, en effet dans l'exemple fourni le script marche seulement si on ne met que <html> ou bien
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
en début de document.
Je l'utilise sur mon forum, en xhtml et sur mon site, en html. Une personne m'a aidé à corriger le script pour qu'il soit fonctionnel en xhtml mais je n'ai pas trouvé le moyen de le faire marcher sur une page qui respecte les normes W3C en html.
Je viens donc ici vous demander de l'aide sur les quelques caractères à modifier pour le rendre fonctionnel sur une page HTML 4.01 Transitional.
Voici la version fonctionnelle en XHTML :

// <![CDATA[
MIN = 33 ;  // largeur minimum en pixel
MAX = 115 ; // largeur maximum en pixel
REACTION = 1.2 ; // réaction des icons par rapport à la souris. plus grand --> plus d'icons qui réagissent

A = ((MIN-MAX)/(MAX * REACTION)) ; // coef directeur de la droite d'agrandissement
IE = document.all ? 1 : 0 ;
img_tags = new Array();

function ouEstMaSouris(e)
{
    var dock = document.getElementById('dock') ; // div qui contient la barre de menu.

    var x = 0;
    if (IE)    x = e.clientX ; // coordonnées x de la souris sur IE 5.5
    else    x = e.pageX ;  // coordonnées x de la souris sur Mozilla ou Netscape 7
      
    x -= dock.offsetLeft ; // on modifie la coordonnée pour quelle soit relatif au div et non à la fenetre.
  
    img_tags = dock.getElementsByTagName('img') ; // les images contenus dans le div
  
    for(i=0 ; i MAX) coef = MAX ;

        img_tags[i].style.width=coef + "px";
        img_tags[i].style.height=coef + "px";
    }
}
// ]]>

et voici la version non fonctionelle en HTML :

<!--

MIN = 33 ;  // largeur minimum en pixel
MAX = 115 ; // largeur maximum en pixel
REACTION = 1.2 ; // réaction des icons par rapport à la souris. plus grand --> plus d'icons qui réagissent

A = ((MIN-MAX)/(MAX * REACTION)) ; // coef directeur de la droite d'agrandissement
IE = document.all ? 1 : 0 ;
img_tags = new Array();

function ouEstMaSouris(e)
{
    var dock = document.getElementById('dock') ; // div qui contient la barre de menu.

    var x = 0;
    if (IE)    x = e.clientX ; // coordonnées x de la souris sur IE 5.5
    else    x = e.pageX ;  // coordonnées x de la souris sur Mozilla ou Netscape 7
       
    x -= dock.offsetLeft ; // on modifie la coordonnée pour quelle soit relatif au div et non à la fenetre.
   
    img_tags = dock.getElementsByTagName('img') ; // les images contenus dans le div
   
    for(i=0 ; i MAX) coef = MAX ;

        img_tags[i].style.width=coef;
        img_tags[i].style.height=coef;
    }
}

//-->

Il n'a que peu de choses à modifier à mon sens, mais en javascript je n'y entends rien donc je men remets à vous, âmes charitables qui passez sur le forum :)

2 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
pas de raison d'avoir deux codes
différents, il manque juste l'unité dans ta version en HTML..
  img_tags[i].style.width  = coef
+ "px";
  img_tags[i].style.height = coef + "px";

du reste les deux codes sont
parfaitement identiques à la notion d'unité prête...
;O)
Messages postés
50
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
3 octobre 2008

Justement je j'avais effectué la modif et ça ne fonctionnait pas. Du coup je comprenais pas trop pourquoi en html ça ne marchait pas.