Conflit onload et window.onload [Résolu]

Minotor458 4 Messages postés dimanche 5 juin 2005Date d'inscription 8 mars 2009 Dernière intervention - 6 mars 2009 à 18:05 - Dernière réponse : Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 8 mars 2009 à 13:30
3
Merci
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 ?

Merci Bul3 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 7 mars 2009 à 09:43
0
Merci
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
Commenter la réponse de Bul3
Minotor458 4 Messages postés dimanche 5 juin 2005Date d'inscription 8 mars 2009 Dernière intervention - 7 mars 2009 à 19:07
0
Merci
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 ??
Commenter la réponse de Minotor458
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 8 mars 2009 à 08:35
0
Merci
  
            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();
}
Commenter la réponse de Bul3
Minotor458 4 Messages postés dimanche 5 juin 2005Date d'inscription 8 mars 2009 Dernière intervention - 8 mars 2009 à 13:17
0
Merci
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 ?
Commenter la réponse de Minotor458
Minotor458 4 Messages postés dimanche 5 juin 2005Date d'inscription 8 mars 2009 Dernière intervention - 8 mars 2009 à 13:39
0
Merci
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.
Commenter la réponse de Minotor458
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 8 mars 2009 à 13:56
0
Merci
>>..onload=
ce serait donc dans la balise body
aujourd'hui "ce n'est plus trop à la mode"
sinon, c'est "pareil"
@+
Commenter la réponse de Bul3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.