Trop de scripts? [Résolu]

Messages postés
29
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
25 juillet 2007
- - Dernière réponse : 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
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
4
3
Merci
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]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Zobibol
Messages postés
29
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
25 juillet 2007
0
Merci
J'ai oublié de préciser: tous les scripts marchent très bien indépendamment.

Merci
Commenter la réponse de arnaultp
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
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 />
Commenter la réponse de cs_bultez
Messages postés
29
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
25 juillet 2007
0
Merci
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...
Commenter la réponse de arnaultp
Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007
0
Merci
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
Commenter la réponse de cs_roro06
Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007
0
Merci
Bonjour




ah ! posté trop tard !!

Cordialement
Roro06
Commenter la réponse de cs_roro06
Messages postés
29
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
25 juillet 2007
0
Merci
Merci pour cette très précieuse précision roro06 ;) C'est en effet très utile.
Merci encore
Commenter la réponse de arnaultp