Problème de compatibilité entre Shadowbox et Motion Gallery [Résolu]

Signaler
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,
J'ai depuis quelques années un Portfolio en ligne avec mes dessins et également quelques (humbles) sites que j'ai fait pour des amis ou des connaissances.
Tout se trouve là:
http://www.vhenin.be/fr/galerie_webdesign_01.html
Sur la droite des vignettes menant vers les différents sites que j'ai réalisés.(motiongallery.js)
Etant donné que, à part le premier, ils ne sont plus mises à jour par mes soins, je voulais remplacer les liens vers les projets finaux par des captures d'écran s'affichant grâce à Shadowbox que j'utilise partout dans mon Portfolio Online.
Voir essai ici: http://www.vhenin.be/fr/galerie_webdesign_01_forum.html
Mais voilà du coup, le bandeau des vignettes ne défile plus...

J'ai découvert que cela venait de là dans mon <HEAD>:
<script type="text/javascript">

Shadowbox.loadSkin('classic', '../shadowbox/src/skin');
Shadowbox.loadLanguage('fr', '../shadowbox/src/lang');
Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', 'wmp'], '../shadowbox/src/player');

window.onload = function(){

    Shadowbox.init();
};
</script>

car quand j'enlève ça, ça défile mais Shadowbox ne marche plus
Y-a t'il moyen de faire fonctionner les deux en même temps (Motiongallery et Shadowbox)?
Merci de votre aide!!!



Davince
Principalement XHTML, CSS

7 réponses

Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

Je vais essayer et te dis quoi.
Merci en tous cas pour cette réponse si rapide.

Bien à toi,

Davince
Principalement XHTML, CSS.
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

Un tout grand merci, Petole Team.
Effectivemment, ça marche!!!

J'ai laissé cela comme ça dans mon <HEAD>:
<script type= "text/javascript">

Shadowbox.loadSkin('classic', '../shadowbox/src/skin');
Shadowbox.loadLanguage('fr', '../shadowbox/src/lang');
Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', 'wmp'], '../shadowbox/src/player');

window.onload = function(){

    Shadowbox.init();
};
</script>


mais ai changé ça à la fin de mon motiongallery.js
(...)if (window.opera){
cross_scroll.style.top =menu_height-actualheight+'px'
setTimeout('cross_scroll.style.top=0', 10)
}
loadedyes=1
if (endofgallerymsg!=""){
creatediv()
positiondiv()
}
}
window.onload=fillup


en ça:
if (window.opera){
cross_scroll.style.top=menu_height-actualheight+'px'
setTimeout('cross_scroll.style.top=0', 10)
}
loadedyes=1
if (endofgallerymsg!=""){
creatediv()
positiondiv()
}
}
window.addEventListener=fillup


et comme tu l'avais dit, ça marche!!!
Encore merci.
En espérant que ça puisse aider d'autres.
Davince
Principalement XHTML, CSS.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
il y a lourd à parier qu'il y a également un window.onload ailleurs dans tes codes, qui annule l'action du second...
Le plus simple et le plus efficace et de passer par un window.addEventListener ou window.attachEvent suivant le cas.

;O)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
pour le coup tu es restrictif, cela ne fonctionnera pas sur IExplorer
je voyais plus un truc du style
if( window.addEventListener) // si W3C supporte
  window.addEventListener( 'load', fillup, false);
else // pour IE
  window.attachEvent( 'onload', fillup);
}


OUPS ! en relisant ton post, est tu sur que cela fonctionne car window.addEventListener = fillup n'est pas la bonne syntaxe.
;O)
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

Salut Petole Team,

Merci pour ta remarque,
Tout fonctionne sous IE, Mozilla Firefox, Safari et Opera.
La seule chose est que:
<script type="text/javascript">

Shadowbox.loadSkin('classic', '../shadowbox/src/skin');
Shadowbox.loadLanguage('fr', '../shadowbox/src/lang');
Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', 'wmp'], '../shadowbox/src/player');

window.onload = function(){

    Shadowbox.init();
};
</script>

doit être présent, même sur les pages sans Shadowbox, pour faire fonctionner la MotionGallery (???). Je ne sais pas vraiment pourquoi mais bon, ça marche à tous les coups dans tous les navigateurs. Donc, je laisse ça comme ça ;-)

Où proposes-tu de mettre le code que tu as montré au post précédent?
Si j'écris
window.addEventListener fillup
(-->
window.addEventListener (fillup);
par exemple) différement, ça marche plus...

Bien à toi,
Davince
Principalement XHTML, CSS
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

OUps je voulais dire
window.addEventListener(fillup);


Davince
Principalement XHTML, CSS
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
window.addEventListener, n'est pas reconnu par IE, donc tu dois avoir un message d'erreur quelque part sous IExplorer

window.addEventListener = fillup
signifie que tu réaffectes à la méthode addEventListener la function fillup, ce qui n'est pas forcément gênant si tu ne l'utilises pas par la suite...

window.addEventListener( fillup)
signifie que tu passes une fonction en premier argument ce qui est incorrect, voir la documentation W3C addEventListener, ou encore peu être plus simple à lire et à comprendre mozilla addEventListener

C'est dans les fichiers js ou tu ajoutes une fonction sur le load de ta page que l'on devrait trouver ce code...

;O)