Bon j'ai essayé de tester ton code tel quel.
Enfin en simlpifiant au max, avec 2 images simples, et un son de ma cave (3ko).
Pour ca, j'ai surtout récupérer tes fonctions javascript pour le son, qui sont au coeur du probleme.
Voici le code que j'ai :
Enfin en simlpifiant au max, avec 2 images simples, et un son de ma cave (3ko).
Pour ca, j'ai surtout récupérer tes fonctions javascript pour le son, qui sont au coeur du probleme.
Voici le code que j'ai :
Code PHP :
<?php
<html>
<head>
<script>
// fonctions pour preload/swap images
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
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) { //v3.0
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); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
// fonctions pour le son
function VerifPlugIn(ExtensionFile)
{
var IsEnabled = true;
if (navigator.appName == "Netscape")
{
IsEnabled = false;
for(var x=0;(x<navigator.mimeTypes.length && !IsEnabled);x++)
{
if(navigator.mimeTypes[x].suffixes.indexOf(ExtensionFile)>=0)
IsEnabled = navigator.mimeTypes[x].enabledPlugin;
}
}
return IsEnabled;
}
function PlaySound(MyName,MyExtension,MyLoop)
{
var AudioEnable = VerifPlugIn(MyExtension),TheLoop = '';
if (navigator.appName == "Netscape" && MyLoop==1) TheLoop='true';
if (AudioEnable) eval('document.'+MyName+'.play('+TheLoop+')');
}
function StopSound(MyName,MyExtension)
{
var AudioEnable = VerifPlugIn(MyExtension);
if (AudioEnable) eval('document.'+MyName+'.stop()');
}
</script>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="MM_preloadImages('img_a.gif','img_b.gif')">
<embed NAME="Son" SRC="suit.wav" MASTERSOUND HIDDEN="true" LOOP="false" AUTOSTART="false"></embed>
<a href="test.htm" onMouseOut="MM_swapImgRestore();StopSound('Son','wav')"
onMouseOver="MM_swapImage('img1','','img_b.gif',1);PlaySound('Son','wav',1)">
<img src="img_a.gif" name="img1" width="200" height="50" border="0" id="img1"></a>
</body>
</html>
Le test est faisable ici : http://isoat.free.fr/test/test.htm
- test avec IE6 : tout marche impec
- test avec Opera : le son ne fonctionne pas
- test avec Firefox 2 : hum ... il me demande d'installer quicktime et en fait ca me saoule un peu...
1) je pense que tes fonctions doivent être alléger. Par exemple, à chaque appel de "playsound" ou "stopsound"
il y a de gros appel à "VerifPlugIn".
Pourquoi vérifier à chaque fois ?
Tu vérifie 1 fois au chargement de la page, tu stick le resultat dans une var, et c'est réglé.
Même mieux ... en javascript, moi je pense que plus c'est simlpe, mieux c'est !
Il faut arriver à faire un appel direct à "document.'+MyName+'.stop()" et "document.'+MyName+'.paly()".
Et si les navigateurs ne le prenne pas en charge, et bien y'aura pas de son ... point final.
2) ormis ces détails, je pense que le probleme principal, c'est la balise EMBED qui est surtout reconnu par IE pour le son.
Avec les autres navigateurs, c'est la galère...
Ya très longtemps, quand je jouais à mettre du son dans mes pages, je sais plus comment je faisais mais
j'avais réussi à me passer de EMBED.
Je vais chercher un peu si tu veux.
Ya quand même bien une solution toute prete fourni quelque part sur le web !