classid et balise <object>

Nouveau WRInaute
Salut
C'est mon premier post. Je trouve ce site très interressant et riches en infos liées au net. Surtout pour les personnes qui touchent de pres ou de loin les sites web dans leurs conceptions.

Ma question :
Pour être conforme avec W3c et aussi compatible tout navigateur et tout systeme d'exploitation.

Quelle classid choisir, si on choisit par exemple classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="WindowsMediaPlayer" , on a droit a un lecteur windows media, mais si la personne est sous mac ou linux, comment faire? Je pose cette question car j'essaye d'intégrer un petit mp3 sur mon site.
Avant j'utilisais la balise <embed> c'etais simple, mais c'est pas valide w3c.

Merci
 
WRInaute occasionnel
Salut et bienvenue sur WRI!

alors <object> est bien conforme au W3C mais il y a plusieurs façon de l'utiliser (en fait c'est une balise fourre-tout multimédia).
classid="" et <param/> c'est ce qu'on appel des controles ActiveX, tu en apprendras plus ici sur object et les activeX: http://fr.selfhtml.org/html/multimedia/objets.htm#active_x

Les activeX il n'y a que Internet Explorer qui les comprend (même FireFox sous Windows ne les interprête pas).

Tu vas donc prevoir deux codes: 1) avec activeX pour Internet Explorer et 2) balise object normal pour tous les autres navigateurs, et balancer ces codes en fonction du navigateur (tu peux detecter le type de navigateur avec javascript ou PHP)

tu as l'air d'avoir trouve ton code pour la partie 1), pour la partie 2) ca devrait ressembler à ça:
Code:
<object data="monpath/fichier.mp3" type="audio/x-mpeg" width="200" height="200">
Votre navigateur ne peut malheureusement pas afficher l'objet !
</object>

eventuellement verifie ton type-mime: http://fr.selfhtml.org/divers/typesmime.htm#recapitulatif

@+
David
 
WRInaute impliqué
c'est quoi la difference entre object et embed ?

et si la deuxieme methode sans preciser le classid marche partout, pourquoi ne pas utiliser que celle la ?
 
WRInaute occasionnel
Juste parce qu'elle est pas valide W3C...

J'utilise, comme préconisé dans la Grosse doc de real, un <embed> à l'intétrieur de l'<object>

Pas sûr que ça passe au w3C non plus, mais ça marche bien en tout cas
 
WRInaute occasionnel
fbparis a dit:
c'est quoi la difference entre object et embed ?

et si la deuxieme methode sans preciser le classid marche partout, pourquoi ne pas utiliser que celle la ?

J'ai oublie de preciser que la deuxieme méthode marche pour tout le monde SAUF Internet Explorer (sic!), en effet sans activeX il ne sait pas faire grand chose dans le multimédia.

<embed> c'est une balise inventée par Netscape à l'époque ou <object> n'existait pas encore. Comme <object> est mieux foutue et plus extensible, le W3C à décider d'abandonner <embed> (en fait il ne l'a même jamais reconnue), d'ailleurs les prochains Netscape et FireFox, à terme, ne comprendront plus <embed> alors arrêter de l'utiliser.

David
 
Nouveau WRInaute
Ok merci, dons il faut deux code de <object> un avec class id et un pour les autres navigateur. Je vais essayer de trouver unscript php pour detecter le navigteur.
Merci
 
WRInaute occasionnel
pas besoin de détection en mettant le embed à l'interieur du object...

ça marche tout seul. tu peux voir ça sur digi$tal.com
 
Nouveau WRInaute
J'ai trouvé celle-là :
<object width="80" height="40" type="audio/x-mpeg" data="sifl.mp3">
<param name="src" value="sifl.mp3" />
<param name="loop" value="true" />
<param name="autostart" value="true" />
</object>

Elle fonctionne sous IE, mozilla et firefox. Mais sous Windows.
Par contre Mozilla et Firefox demande Quicktime, et IE utilise Windows media. Il me reste plus qu'a vous demander d'essayer sur MAC ou linux svp

l'adresse du site est (pas encore fini) :
http://www.indian-west.com/index.php

merci
 
WRInaute occasionnel
Pas de <embed> B....l! ça va être abandonné! Et fireFox s'en sort très bien juste avec <object> il suffit de savoir coder cette balise.

Pour le script PHP en voici un qui detecte les navigateurs base sur Gecko (FireFox, Mozilla, Netscape, Camino...)
Code:
$navigweb=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(gecko)/i', $navigweb)) { $typenavig="gecko"; }
else { $typenavig="autre"; }
 
WRInaute occasionnel
dztcid a dit:
J'ai trouvé celle-là :
<object width="80" height="40" type="audio/x-mpeg" data="sifl.mp3">
<param name="src" value="sifl.mp3" />
<param name="loop" value="true" />
<param name="autostart" value="true" />
</object>

Elle fonctionne sous IE, mozilla et firefox. Mais sous Windows.
Par contre Mozilla et Firefox demande Quicktime, et IE utilise Windows media.

les balises <param> s'ont interprêtés différement suivant le lecteur (quicktime, real, mplayer etc...), il y a même un risque de plantage si le lecteur ne gére pas le <param> (oui c'est compliqué le multimédia). Dans ton cas c'est quicktime qui est appelé, mais chez un autre si il a installé un plug-in pour un autre lecteur, c'est lui qui sera appelé, il y a autant de config que d'internautes!
 
Nouveau WRInaute
Ok , il faudrait donc intégrer ton script php pour reconnaître le navigateur. Puis faire deux balises <object> differentes?

Le problème, Je ne sais pas par quoi commencer et comment assembler ces 3 codes.

:)
 
WRInaute occasionnel
dztcid a dit:
Ok , il faudrait donc intégrer ton script php pour reconnaître le navigateur. Puis faire deux balises <object> differentes?

Le problème, Je ne sais pas par quoi commencer et comment assembler ces 3 codes.

:)

tu debutes en PHP? Voici le tutorial de PHP, ça ne te fera pas de mal: http://www.php.net/manual/fr/

Pour ton code ca ressemblerait à qqchose comme ça:

Code:
<?php
$navigweb=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(gecko)/i', $navigweb)) { $typenavig="gecko"; }
else { $typenavig="autre"; }
?>
<!DOCTYPE ......
<html......
<head.....

</head>
<body>
.....
//Là ou doit apparaitre le lecteur mp3
<?php
if($typenavig=="gecko")
{
   echo("<object data="monpath/fichier.mp3" type="audio/x-mpeg" width="200" height="200">
Votre navigateur ne peut malheureusement pas afficher l'objet !
</object>");
}
else
{
   echo("<object width="80" height="40" classid="6BF52A52-394A-11D3-B153-00C04F79FAA6" data="sifl.mp3">
<param name="src" value="sifl.mp3" />
<param name="loop" value="true" />
<param name="autostart" value="true" />
</object> ");
} ?>
.....
</body>
</html>

Bon j'ai écris ce code sans le vérifier, à toi de faire des tests.

David
 
Nouveau WRInaute
Je n ai pas reussi a faire quoi que ce soit avec ce script, je suis pas doué en php. Je débute

Parcontre quand je fais un scripte :
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

je lis sur la page internet la version du browser.

je vais continuer la recherche
 
Nouveau WRInaute
j ai trouvé sur le net des script. Dont un ici http://fr.php.net/get_browser

j ai fais ça fonctionne bien sous IE ou GECKO

<?php

if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') )
{
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') )
{
echo'<object width="80" height="40" type="audio/x-mpeg" data="sifl.mp3">
<param name="src" value="sifl.mp3" />
<param name="loop" value="true" />
<param name="autostart" value="true" />
</object>';
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') )
{
echo'<object width="80" height="40" type="audio/x-mpeg" data="sifl.mp3">
<param name="src" value="sifl.mp3" />
<param name="loop" value="true" />
<param name="autostart" value="true" />
</object>';
}
else
{
echo'<object width="80" height="40" type="audio/x-mpeg" data="sifl.mp3">
<param name="src" value="sifl.mp3" />
<param name="loop" value="true" />
<param name="autostart" value="true" />
</object>';
}
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
{
echo'';
}
else
{
echo'<object classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="WindowsMediaPlayer1" height="45">
<param name="URL" value="sifl.mp3">
<param name="AutoStart" value="True">
<param name="ShowControls" value="True">
<param name="ShowStatusBar" value="False">
<param name="ShowDisplay" value="False">
<param name="AutoRewind" value="True"></object>';
}
}
else
{
echo'<object data="sifl.mp3" type="audio/x-mpeg" width="80" height="40"></object>';
}

echo $browser;

?>

il faut que je download OPERA pour tester si le mp3 fonctionne. :)

PS : j ai dowload opera mais chez moi bizarrement les fichiers MP3 ne sont pas lu avec OPERA, que ce soit en object versio mozilla ou IE, en bgsound rien y fait, pour embed il me demande un plugins mais je ne sais pas lekel, j ai un windows xp avec real Quick time winamp media player etc...
donc je lache opera, y en aura pour MOZILLA IE les plus importants
 
Discussions similaires
Haut