Trop de scripts?

Résolu
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007 - 26 juin 2007 à 14:01
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007 - 26 juin 2007 à 16:52
Bonjour à tous!
J'ai ajouté un nouveau script à ma superbe page html ce matin. Et depuis, j'ai un de mes scripts qui ne marche plus :/
Et j'ai beau chercher et chercher, je ne vois pas ce qui cloche.

voici une partie de ma pahe html:

<head>
        <link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/man.css" />
        <script language=javascript src="js/menu_deroulant.js"></script>
        <script language=javascript src="js/defilement_menu.js"></script>
        <!-- <script language=javascript src="js/menu_dynamique_dhtml.js"></script> -->
</head>

> si j'enlève le commentaire, c'est defilement_menu.js qui ne marche plus.

Voici le code de ces 2 scripts:
defilement_menu :

<!--
//images du manège
var pict = ["js/sodedat93.PNG",
    "js/qualite.jpg",
    "js/documents_types.png",
    "js/help.png"];
//lien des vignettes dans l'ordre des images ci dessus
var lien = ["sodedat();",
    "qualite();",
    "documents_types();",
    "help();"];
var angle 0, ll, hh, bcl, vit 0.05;
//taille des vignettes
var taille = 50;
//largeur de tout le manège
var largeur = 30*pict.length;
//hauteur de tout le manège
var hauteur = 40;

function window_onload()
{
    for( i=1 ; i"
    }
   
    return move()
}

function move()
{
    ll=document.body.clientWidth/2
    hh=document.body.clientHeight/2
    angle=angle-vit
   
    for( i=1 ; i La Sodedat 93 </h1>"
                                                +    " "
                                                +        "<li> Organigramme </li>"
                                                +        "<li> KBis </li>"
                                                +        "<li> Status </li>"
                                                +    "";
}

function qualite()
{
    document.getElementById("texte").innerHTML =    " Qualité
";
}

function documents_types()
{
    document.getElementById("texte").innerHTML =    " Documents Types
"
                                                +    " "
                                                +        "<li> Foncier </li>"
                                                +        "<li> Marchés </li>"
                                                +        "<li> Réponses de S93 </li>"
                                                +    "";
}

function help()
{
    document.getElementById("texte").innerHTML =    " Aide / Formation
"

                                                +    " "
                                                +        "<li> FAQ </li>"
                                                +        "<li> Se former </li>"
                                                +        "<li> Docs administrateur </li>"
                                                +    "";
}

-->

menu_dynamique_dhtml:

<!--

ejs_mv3_largeur = 150;
ejs_mv3_hauteur = 400;

/* LISTE DES MENU */
ejs_mv3_menu = new Array;
ejs_mv3_menu[0] = 'menu1';
ejs_mv3_menu[1] = 'menu2';
ejs_mv3_menu[2] = 'menu3';

/* LISTE DES LIENS */
ejs_mv3_lien = new Array;
ejs_mv3_lien[0] = ''
ejs_mv3_lien[1] = ''
ejs_mv3_lien[2] = ''
ejs_mv3_lien[0] += "- menu1.1
";
ejs_mv3_lien[0] += "- menu1.2
";
ejs_mv3_lien[0] += "- menu1.3
";
ejs_mv3_lien[1] += "- menu2.1
";
ejs_mv3_lien[2] += "- menu3.1
";
ejs_mv3_lien[2] += "- menu3.2
";

function d(texte)
{
    document.write(texte);
}

d("
");
/*    + "style="position:relative;"
    + "width:" + ejs_mv3_largeur + ";"
    + "height:"    + ejs_mv3_hauteur + ";"
    + "">"
);*/
   
d("
");
/*    + "style="position:absolute;"
    + "width:" + (ejs_mv3_largeur-8) + ";"
    + "height:" + (ejs_mv3_hauteur-8) + ";"
    + "top:4;" + "left:4;"
    + "clip:rect(0 " + (ejs_mv3_largeur-8) + " " + (ejs_mv3_hauteur-8) + " 0)">"
);*/
   
d("
"
    + "Chargement du menu ..."
    + "
"
);
   
d("
"
    + "
"
);
   
d("

");

ejs_mv3_mode = 1;
ejs_mv3_actuel = 0;

function ejs_mv3_show(menu)
{
    if( menu == "menu" )
    {
        var html = "\";
        for( a=0 ; a<ejs_mv3_menu.length ; a++ )
        {
            html +=     \"----
\"
                    +        \""
                    +            ""
                    +                ejs_mv3_menu[a]
                    +            ""
                    +        ", \"
                    +    \"\";
        }
        html += "
";
        document.getElementById("ejs_mv3_scroll_1").innerHTML = html;
        if(ejs_mv3_mode == 2)
            ejs_mv3_action(1);
    }
    else
    {
        var html =     "\"
                +         \"----
\"
                +             \""
                +                 ejs_mv3_menu[menu]
                +             ", \"
                +        \"\"
                +        \"----
\"
                +            \""
                +                ejs_mv3_lien[menu]
                +            ", \"
                +        \"\"
                +        \"----
\"
                +            \""
                +                "&lt; Retour "
                +            ", \"
                +        \"\"
                +    "
";
               
        document.getElementById("ejs_mv3_scroll_2").innerHTML = html;
        if(ejs_mv3_mode == 1)
            ejs_mv3_action(2);
    }
}
ejs_mv3_cursor = ejs_mv3_largeur;

function ejs_mv3_action(action)
{
    if(action == 2)
    {
        if( ejs_mv3_cursor > 0 )
        {
            ejs_mv3_cursor -= 10;
            document.getElementById("ejs_mv3_scroll_1").style.left = ejs_mv3_cursor - ejs_mv3_largeur;
            document.getElementById("ejs_mv3_scroll_2").style.left = ejs_mv3_cursor;
            setTimeout("ejs_mv3_action(" + action + ")",1);
            ejs_mv3_mode = 2;
        }
    }
    else
    {
        if( ejs_mv3_cursor < ejs_mv3_largeur )
        {
            ejs_mv3_cursor += 10;
            document.getElementById("ejs_mv3_scroll_1").style.left = ejs_mv3_cursor - ejs_mv3_largeur;
            document.getElementById("ejs_mv3_scroll_2").style.left = ejs_mv3_cursor;
            setTimeout("ejs_mv3_action(" + action + ")",1);
            ejs_mv3_mode = 1;
        }
    }
}

window.onload = new Function("ejs_mv3_show("menu")");

-->

Merci d'avance pour vos réponses

7 réponses

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
26 juin 2007 à 14:15
Salutation, comme ça au pied levé ( oups, j'ai failli choir )
c'est un problème de onload sur le body ,

je pense que tu dois l'avoir plusieur fois, donc, il n'en interprête qu'un seul et je pense c'est le dernier qui est interpréter.
il est donc, plus logique de réécrire une méthode independante qui éxécutera toutes les méthodes appelée sur le onload

par exemple :
window.onload = function (){
    // appel de la méthode onload de menu_dynamique_dhtml
     ejs_mv3_show("menu");
    // appel de la méthode onload de defilement_menu
    window_onload();
}

et donc supprimer
window.onload = new Function("ejs_mv3_show("menu")");

Mais cela semble être un problème relativement récurent dans le forum.
[o-_-o]
3
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007
26 juin 2007 à 14:03
J'ai oublié de préciser: tous les scripts marchent très bien indépendamment.

Merci
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
26 juin 2007 à 14:11
Bonjour,

sans préjuger du reste :

    window.onload = new Function("ejs_mv3_show("menu")");
    et tu as une fonction window_onload   qui doit aussi être appelée
       sur window.onload ou





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 Explorer</label>|activer le deboggage : utils/options Ile Debogger IE | 
| | 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) | | 
o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o










<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007
26 juin 2007 à 14:39
Merci à tous les deux pour vos réponses très rapides.
Et merci à toi Zobibol pour ta réponse qui était un peu plus précise...
0

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

Posez votre question
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
26 juin 2007 à 14:45
Bonjour






et je pense c'est le dernier qui est interpréter.

Je confirme

Une solution, dans ce genre de cas, est de remplacer les window.onload par des "écouteurs" (si si !!), des "listener" informatiquement parlant ! un truc du genre :

(window.attachEvent)?
    window.attachEvent("onload", <fonction>) :
    window.addEventListener("load", <fonction>, false);
// Oui ! même pour ça, il faut différencier les sniffeurs

ton :
window.onload = new Function("ejs_mv3_show("menu")");
peut s'écrire :
(window.attachEvent)?

    window.attachEvent("onload",  function(){ejs_mv3_show("menu")}) :

    window.addEventListener("load", function(){ejs_mv3_show("menu")}, false);

ou bien :
(window.attachEvent)?

    window.attachEvent("onload", ejs_init) :

    window.addEventListener("load", ejs_init, false);

function ejs_init(){
ejs_mv3_show("menu")
}

ça permet de ne plus avoir a modifier les onload du body, les window.onload, etc ... qu'on peut retrouver dans plusieurs scripts différents. Contrairement au window.onload, on peut ajouter autant de listener que necessaire, ils ne s'"écrasent" pas les uns les autres

Cordialement
Roro06
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
26 juin 2007 à 14:46
Bonjour




ah ! posté trop tard !!

Cordialement
Roro06
0
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007
26 juin 2007 à 16:52
Merci pour cette très précieuse précision roro06 ;) C'est en effet très utile.
Merci encore
0
Rejoignez-nous