11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

j'ai installé plusieurs scripts sur mon site qui me permettent d'une part d'avoir un texte défilant et (en principe) en même temps un slideshow lightboxEx.

Cependant, je n'ai pas la même chose lorsque je suis sur firefox3 et IE7.

Je m'explique : pour que le texte défilant et le slideshow fonctionne sous IE7, il a fallu que je rajoute l'attribut dans le body onload => initLightbox()

exemple 1 avec l'attribut.

Cependant en le rajoutant, du côté de firefox 3 le texte défilant se fige, tandis que le slideshow continue de fonctionner.

Si j'enlève l'attribut de onload, sous firefox3 tout fonctionne, mais sur IE7, mes photos s'ouvre sur une page blanche.

exemple 2 sans l'attribut

Je suppose qu'il y a un conflit entre ces deux scripts. N'y connaissant pas grand chose en javascript, ou plutôt rien pour être plus précis, je me tourne vers des spécialistes en espérant que vous pourrez m'aider à trouver une solution.

Merci de votre aide et du temps que vous consacrez aux autres.

nova06
Modifié par nova06 (04 Mar 2009 - 01:18)
Bonjour,

merci pour l'info. J'ai lu cette astuce, mais je ne sais pas comment la mettre en oeuvre dans mes pages. Smiley confused

J'ai un évènement de type window.onload=init dans le script de mon texte défilant et j'ai celui de lightboxEx dans le body onload="initLightbox()".

Comment dois-je les rassembler pour que les deux fonctionnent ?

Merci de votre indulgence, je découvre javascript...

<!-- texte défilant -->
<script type="text/javascript">
<!--
var speed = 230         //vitesse d'écriture
var speed2 = 350        //temps de pause
// Ci-dessous : Rajoutez des messages sans oublier de changer le numéro du msg[...]
msg = []
function upticker(){
if (y > msg2.length - 1) {
y = 0; setTimeout("upticker()",speed);}
else{if (x > msg2[y].length) {
msg = msg2[y];x = 0; y++;
setTimeout("upticker()",speed2);}
else {msg = msg2[y].substring(0,x++);
setTimeout("upticker()",speed);}
t.innerHTML = msg };}
setTimeout("upticker()",speed);
function init(){t=document.getElementById("ticker");
msg[0]=t.innerHTML;msg2 = msg;x = y = 0;
upticker()
}
window.onload=init;
//-->
</script>
<!-- fin de texte défilant -->

<!-- boutons de navigation -->
<script type="text/javascript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}
//-->
</script>
</head>
<body onload="initLightbox()">
[/i][/i][/i][/i][/i][/i][/i][/i][/i]
Modifié par nova06 (04 Mar 2009 - 13:02)
Tout d'abord enlève l'événement onload de ton body.
Ensuite remplace
window.onload=init;
par
window.onload = function() { initLightbox(); init(); };


Comme indiqué dans le lien Julien Royer quoi ^^
Merci KalNex.
J'ai inscrit ces lignes de code dans ma page et ça ne fonctionne toujours pas sous IE7. Smiley decu
Avec firefox, pas de problème, mais le "truc... machin... chose" de microsoft, qui sert de navigateur, c'est de la daube.
Essais de mettre tout dans la balise Body on sait jamais :
<body onload="initLightbox(); init();">


Et tu sais il est possible qu'il y ait incompatibilité entre les deux scripts ... a moins qu'ils soient fait par la même team.

As tu testé les scripts un à un ? Ya t'il eu des soucis ?
J'ai essayé dans la balise body. J'ai même modifié le nom des fonctions pour le cas où.
Ce qui me surprend, c'est que du côté Mac sous firefox 3, les deux scripts fonctionnent et côté PC (vista en plus) les deux ne fonctionnent pas en même temps. C'est soit l'un soit l'autre.

Les deux scripts n'ont pas été élaborés par les mêmes personnes.

Je pense que je vais abandonner l'idée de les avoir sur les mêmes pages.

L'un sera uniquement en page d'accueil pour éviter les conflits avec celles qui possèdent des photos à agrandir.

Je vais quand même chercher un nouveau script de texte défilant du style "ticker", car j'aime bien voir apparaitre les lettres les unes après les autres comme nos bonnes vieilles machines à taper.

Si je ne trouve rien, je laisse tomber.

Merci pour votre aide. Il ne me reste qu'à chercher un bon bouquin pour apprendre les bases du javacript. Et qui sait, un jour peut-être, je pourrai filer un coup de main, comme vous le faites, aux autres. Smiley langue
Bonsoir,

j'ai trouvé un nouveau script qui fonctionne parfaitement sur les deux plateformes MAC et PC, sous FF3 et IE7.

De plus le script lightbox n'est pas empêché. C'est génial.

Je l'ai trouvé sur dynamicdrive sous le nom de typing scroller. Après quelques modifs, de vitesse, de police, de pause et de curseur c'est en ligne. J'espère que vous ne m'en voudrez pas trop de les avoir cité ici.

Merci encore une fois, pour votre aide.