Conflit onload et window.onload

Résolu
Minotor458 Messages postés 4 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 8 mars 2009 - 6 mars 2009 à 18:05
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 8 mars 2009 à 13:56
Bonjour à tous,

Malgré plusieurs années à surfer sur codes-sources je n'ai jamais participé à la communauté mais aujourd'hui j'ai besoin d'un coup de main pour un problème entre 2 petits scripts js qui ne s'entendent pas. Je commence seulement depuis quelques semaines à bricoler le js pour un peu plus d'interactivité sur un futur site.

Avec plusieurs morceaux de code récupérés sur des tutoriels et quelques longues heures de recherche, j'ai pu réaliser le slider (Distance canapé-télé au milieu à gauche de la page http://www.astuce-roulette.com/plasma/ ) tout fonctionne parfaitement mais dernierement j'ai voulu permettre à ma barre de recherche de s'afficher au bout quelques instant sur ma page pour qu'elle soit mise en avant. (Vous pouvez tester l'activation/désactivation dans le menu sur le lien Recherche).

Malheuresement pour arriver à se résultat j'ai du ajouter un onload sur le body () qui éxecute une fonction préalablement chargée ( http://www.astuce-roulette.com/plasma/js/recherche_accueil.js ), cela fonctionne mais le slider, lui, ne fonctionne plus.

D'après mes recherches sur google et cie, la partie du slider posant problème est celle qui fait appel à la fonction window.onload :

function carpeAddLoadEvent(func)
{
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            
            window.onload = func;
        }
        else {
            window.onload = function() {
                oldonload();
                func();
                
            };
        }
}


Voici l'adresse du slider ( http://www.astuce-roulette.com/plasma/js/slider.js ).

J'ai actuellement supprimé le onload="' du body pour des raisons pratiques mais j'aimerai pouvoir faire fonctionner les deux en maintenant, donc je fait appel à vous, si vous avez une idée pour corriger ce problème, je vous en serai très reconnaissant.

Merci,
Arnaud.

7 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mars 2009 à 13:30
func c'est une variable javascript dans la fonction carpeAddEent

<script type="text/javascript">
        window.onload=function()
        { carpeInit();
          accueil();
        }
</script>

et regarde la balise body... il y a un onload ?
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 mars 2009 à 09:43
Bonjour,

ben normalement (?) ça devrait le faire ce que tu nous mets

même  s'il vaudrait mieux (?) utiliser
attachEvent() pour IE et
addEventListener() pour les autres navigateurs

ou tout simplement
window.onload=function()
{ accueil();
appel au "slider"();
}

mais il y a peut-être des incompatibilités entre ces fonctions.... va savoir???

Navigateurs |Quelques Explications |----
Chrome
, contrôler page actuelle / Options pour développeurs
/ Console Javascript, ----
FireFox
, Outils / Console d'erreurs
et mieux : télécharger mon Site] [M'écrire] Bul
0
Minotor458 Messages postés 4 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 8 mars 2009
7 mars 2009 à 19:07
Bonjour,

Tout d'abord merci beaucoup de consacrer du temps à mon problème.

Donc j'ai modifié ma fonction d'appel du slider :

function carpeAddLoadEvent(func)
{
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
           
            window.onload = func;
            window.onload = accueil;
        }
        else {
            window.onload = function() {
                oldonload();
                func();
                accueil();
               
            };
        }
}

Effectivement la fonction accueil() fonctionne  le slider par contre ne fonctionne toujours pas, aucune erreur avec FireBug (appart si il faut aller dans une rubrique spéciale pour lire l'erreur ?). Comment puis-je trouver l'origine du conflit ??
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mars 2009 à 08:35
  
            window.onload = func;
            window.onload = accueil;
       
ben là, seul accueil est appelé.
func ? c'est quoi ? c'est la "fonction slider" ou pas ?

entre nous,  c'est ta page, tu sais s'il y a déjà une fonction dans le onload ! non  ?

ça devrait le faire, sans rien d'autres :
window.onload=function()
{ appel de la fonction slider qu'on ne connait pas();
  accueil();
}
0

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

Posez votre question
Minotor458 Messages postés 4 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 8 mars 2009
8 mars 2009 à 13:17
Seul accueil() fonctionne :

  <script type="text/javascript">
        window.onload=function()
        {
          carpeAddLoadEvent(carpeInit);
          accueil();
        }
        </script>

carpeAddLoadEvent(carpeInit); c'était l'appel qui était tout en bas de mon fichier slider.js

Pour ce qui ai de func(), honnêtement je ne sais pas, c'était dans la script de base que j'ai récupéré, et je n'ai pas trouvé de lien avec le reste du script ( http://www.astuce-roulette.com/plasma/js/slider.js ).

Une autre idée ?
0
Minotor458 Messages postés 4 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 8 mars 2009
8 mars 2009 à 13:39
Ah merci beaucoup, cela fonctionne :)

J'ai encore beaucoup à apprendre en JS et je vais commencer par simplifier toutes ces fonctions de mon slider...

PS : Est-il plus intéréssant de faire quelques chose du genre : onload="carpeInit(); accueil();" ??

Merci,
Arnaud.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mars 2009 à 13:56
>>..onload=
ce serait donc dans la balise body
aujourd'hui "ce n'est plus trop à la mode"
sinon, c'est "pareil"
@+
0
Rejoignez-nous