5542 sujets

Sémantique web et HTML

Bonjour !

Je suis en train d'intégrer un petit diaporama en flash sur une des pages de mon site. Le problème est que l'intreface de mon diapo apparait mais les images ne se chargent pas.

Ma page se nomme galerie.php sur le dossier racine
Ensuite j'ai un dossier contenant mon swf nommé diapo.swf, mon fichier xml, mon swfobject et un dossier avec mes images.

Dans mon head j'ai mis le code suivant :

a écrit :
<script type="text/javascript" src="galerie/swfobject.js"></script>


Puis dans mon body à l'interieur une div "image" pour recevoir mon diapo et j'ai mis mon script:

a écrit :
<div id="image">
</div>
<script type="text/javascript">
//alert(document.getElementById("image").innerHTML);
var so = new SWFObject("galerie/diapo.swf", "diaporama", 500, 600, 8, "#ffffff");
so.write("image");
alert(document.getElementById("image").innerHTML);
/*
document.getElementById("image").innerHTML='<embed type="application/x-shockwave-flash" src="galerie/diapo.swf" style="" id="diaporama" name="diaporama" bgcolor="#ffffff" quality="high" height="600" width="500">';
*/
</script>


nb: dsl pour la mise en page mais c la première fois que je poste du code...
Modifié par Ripper Roo (22 Nov 2007 - 08:37)
Bonjour et bienvenu à toi,

Est-il normal que tu fermes immédiatement le <div> image ?
Je suppose qu'il devrait plutôt englober ton script, non ? Smiley murf
<div id="image">
</div>
<script type="text/javascript">...</script>
C'est une solution qu'on m'a appris pour éviter qu'explorer 7 ne bloque le flash avec son alerte "explorer a bloqué un script dangereux...".

Le navigateur lit la div qui est vide puis le script est envoyé dans la div et explorer a rien vu donc pas d'alerte.

Mais je veais tenter de le metrre dedans. on sait jamais.
Modifié par Ripper Roo (22 Nov 2007 - 22:36)
Salut,
Il n'y a aucune raison que ça ne marche pas à cause de cette méthode d'intégration, et si tu vois l'interface c'est que l'integration est reussie, donc le probléme c'est ton flash... Il ne doit pas charger le xml.
C'est toi qui l'a fait le diaporama flash ou tu l'as trouvé quelque part? parcequ'il faut surement mettre le xml à un endroit précis, l'encoder d'une certaine maniére voir passer une variable depuis ta page...
Je l'ai fais moi même. j'ai testé mon fichier swf (seul hors page html) dans le dossier où il se trouve et ça marche. Donc le xml semble bien placé. C'est au niveau de l'intégration qu'il y a un souci à mon avis...
Modifié par Ripper Roo (23 Nov 2007 - 18:44)
Dans ce cas la il ne te reste plus qu'a faire une démarche de débugage flash...
C'est a dire, dans ton flash tu crées un petit code qui affiche le liens vers le xml, et tu le lis depuis ta page, si il s'affiche, c'est pas ça, ensuite tu fais un petit code qui affiche le premier noeud xml, si ça marche c'est pas ça... ensuite la premiére image... etc.

il faut également faire attention dans les chemins de fichier aux caractéres blanc, aux caractéres spéciaux et aux accents, par exemple "&" doit être remplacer par "%26" etc..
J'ai vérifié mon xml est bien placé.

Après pas d'erreur dans le code.


J'ai aussi tenté au lieu d'une insertion manuelle de le faire automatiquement avec Dreamweaver. Même résultat.

Je vous met le code de mon flash

frame1 :

a écrit :
stop();

xml=new XML();
xml.ignoreWhite=true;

xml.onLoad=function(success){
gotoAndStop(2);
}

this.onEnterFrame=function(){
var bl=this.getBytesLoaded();
var bt=this.getBytesTotal();
//trace(bl+"/"+bt);
if ((bl==bt)&&(bt!=0)){
delete this.onEnterFrame;
xml.load("imgxml.xml");
}
}



Frame 2:

a écrit :
stop();

currentID=0;
oldID=0;

function updateID(sens){
oldID=currentID;
currentID+=sens;
if (currentID <0){
currentID=xml.childNodes.length-1;
}
else if(currentID>xml.childNodes.length-1){
currentID=0;
}
}

function imageExist(){
//trace(currentID);
btn_back.enabled=false;
btn_next.enabled=false;
boite_txt.text="Loading...";
if (mc_img2["mc_img"+currentID]){
//img existe
//trace("existe");
imageReady();
}
else{
//img n'existe pas
//trace("n'existe pas");
createImg();
}
//trace("----");
}

mcl=new MovieClipLoader();
mcl_listener=new Object();
mcl_listener.onLoadInit=function(cible){
//trace(cible+"chargée et exécutée");
cible._x=Math.round((Stage.width/2)-(cible._width/2));
cible._y=Math.round((Stage.height/2)-(cible._height/2));
imageReady();
}

mcl_listener.onLoadProgress=function(cible,bl,bt){
var pourcent=Math.round(bl*100/bt);
boite_txt.text=pourcent+"%";
mc_img2["mc_img"+oldID]._alpha=100-pourcent;
}

mcl.addListener(mcl_listener);

function createImg(){
mc_img2.createEmptyMovieClip("mc_img"+currentID,mc_img2.getNextHighestDepth());
var imgURL="filexml/"+xml.childNodes[currentID].attributes.src;
mcl.loadClip(imgURL,mc_img2["mc_img"+currentID]);

}

function imageReady(){
//trace("image ready");
delete mc_img2["mc_img"+oldId].onEnterFrame;
mc_img2["mc_img"+oldID]._alpha=0;
mc_img2["mc_img"+currentID]._alpha=0;
mc_img2["mc_img"+currentID].onEnterFrame=function(){
this._alpha+=8;
if(this._alpha >=100){
delete this.onEnterFrame;
}
}
btn_back.enabled=true;
btn_next.enabled=true;
boite_txt.text=(currentID+1)+"/"+xml.childNodes.length;
boite_com.text=+xml.childNodes[currentID].attributes.desc;
}

btn_back.onRelease=function(){
this._parent.updateID(-1);
this._parent.imageExist();
}

btn_next.onRelease=function(){
this._parent.updateID(1);
this._parent.imageExist();
}

imageExist();


j'ai aussi tenté un lien onclick="window.open par contre mon diapo s'agrandit sur toute la hauteur de la page et mes images sont pixelisées du coup. Au pire je peux opter pour cette soluce.

Je vous met mon code pop-up :

a écrit :
<a class="lien" href="galerie/diapo.swf" onclick="window.open("galerie/diapo.swf" width="500" height="600", toolbar=no status=no");return false;" >Galerie</a>

Modifié par Ripper Roo (23 Nov 2007 - 20:19)
Bonsoir,

Ripper Roo, merci de faire attention à la mise en forme des extraits de code dans tes messages. Tu as fait l'effort de baliser correctement les blocs de code dans ton premier message, donc je suppose que tu devrais pouvoir le faire pour le message ci-dessus. Smiley cligne

Cygnus a écrit :
Est-il normal que tu fermes immédiatement le <div> image ?
Je suppose qu'il devrait plutôt englober ton script, non ?

Il n'y a pas de raison particulière pour ça, non.
En plus, il me semble que ça fait planter IE. J'ai fait ça une fois un vendredi soir (ça m'a semblé plus logique) sur le site dont je m'occupe pour le boulot... le lundi matin, on m'apprend que le site n'est pas utilisable. En fait, il n'était pas utilisable avec IE (ce qui est quelque peu problématique). Smiley sweatdrop
Mais j'avais peut-être fait une autre bêtise... Smiley rolleyes
En plus normalement ce div sert à mettre un contenu alternatif au flash, ou un lien pour télecharger le pluggin, ce qui est tout l'interêt de cet méthode (en fait c'est le réel interêt, non le message ie...)
Après avoir posé ma question à un ami voci ce qu'il m'a répondu :

a écrit :
C'est normal que ça ne fonctionne pas. Si quand tu lance ton swf, ça fonctionne, c'est bel et bien car ton xml se trouve dans le même dossier, et que dans ton fla, tu fais appels à ce xml en url relative.
Hors, une fois chargée depuis ta page php qui se trouve dans un dossier parent, le point de départ de ton swf pour les url relative ne dépend plus de l'emplacement du swf, mais de la page qui l'appelle.

Ce qui signifie que ton swf doit faire appel à "galerie/tonfichier.xml". Certes, ça ne fonctionnera plus pendant tes tests, mais en ligne, si Smiley cligne


Je teste ça ce week-end et je vous tiens au courant !
Modifié par Ripper Roo (24 Nov 2007 - 10:05)
Désolé pour le double post.

C'ets juste pour signaler que le problème venait bien de ce que j'ai dit au post précédent. en fait lorsqu'on met sur une page un swf il faut dans celui-ci mettre les liens vers le xml du point de vue de la page html ou php et non du sien. Smiley cligne
Hello,

Sans rapport avec le sujet: Ripper Roo, j'ai supprimé ta signature qui n'est pas en accord avec les règles du forum, et notamment la règle 17.