11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis en train de m'occuper du site web de ma radio et j'ai récupéré le travail réalisé par une autre personne.

Cette personne avait réalisé un player en flash+javascript qui s'ouvre dans une popup et qui permet d'écouter nos programmes diffusés en direct sur le net via une URL de type "http://xxx.xxx.xxx.xxx:8000" ainsi que des fichiers .mp3 placés sur notre FTP.

Ce player marche très bien sous Internet Explorer, mais lorsque l'on passe sous Firefox aucun son n'est lu...

Je n'ai malheureusement pas accès au fichier source du player (en .fla), mais voici le script utilisé sur la page player.php du site :

player.php

<!--[if !IE]> Standard XHTML object instanciation <!-->
<object id="player" type="text/html" data="$req_URI" width="0" height="0">
<!--><![endif]-->
<!--[if IE]>
<object id="player" classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="0" height="0">
<![endif]-->
<? if($req_URI=="stream") { $req_URI="http://xxx.xxx.xxx.xxx:8000"; } 
	if (substr($req_URI, 0, 7) != "http://") {
	$req_URI = strtolower(strtok($_SERVER['SERVER_PROTOCOL'], '/')).'://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).$req_URI;
}
?>
<param name="URL" value="<?=$req_URI ?>" />
</object>

<!--[if !IE]> Standard XHTML object instanciation <!-->
<object id="controls" type="application/x-shockwave-flash" data="swf/player.swf" width="500" height="211" align="middle">
<!--><![endif]-->
<!--[if IE]>
<object id="controls" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="500" height="211" align="middle">
<![endif]-->
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="swf/player.swf?uri=<?=$req_uri; ?>" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
</object>


Et voici le script qui appelle le player sur ma page principale :

<head>
<script language="JavaScript">
<!--
function player(file) {
  window.open('player.php?URI='+file, 'MediaPlayer', 'titlebar=no, status=no, alwaysRaised=yes,width=515,height=320');
}
-->
</script>
</head>

<body>
<a href="javascript:player('stream')"><img src="images/player.jpg"></a></td>
</body>


Est-ce que quelqu'un peut m'éclaire sur ce problème ? Smiley confused

Merci d'avance.
Modifié par Jihen (20 Dec 2006 - 21:00)
Je n'en mettrais pas ma main au feu mais il me semble que les composants référencés par CLSID (classid) sont une spécificité IE.
C'est bien sympa à toi de te préoccuper de la compatibilité FF mais...
... et... j'en mets ma main au feu... dom ou pas dom, clsid ou pas clsid...

Certaines implémentations de FireFox (la mienne entre-autres (FreeBSD 6.1 - 64 bits) n'ont pas de plugin flash disponible et gnash n'est pas encore opérationnel.
Quant à Konqueror dans le même environnement il me semble que son plugin n'est que au niveau Flash 6.

... alors...
aCOSwt a écrit :
C'est bien sympa à toi de te préoccuper de la compatibilité FF mais...
... et... j'en mets ma main au feu... dom ou pas dom, clsid ou pas clsid...

Certaines implémentations de FireFox (la mienne entre-autres (FreeBSD 6.1 - 64 bits) n'ont pas de plugin flash disponible et gnash n'est pas encore opérationnel.
Quant à Konqueror dans le même environnement il me semble que son plugin n'est que au niveau Flash 6.
Je ne comprends pas. Sous prétexte que ça ne marchera pas avec ta version de FF, il ne faut pas rendre le code compatible avec les autres ? Smiley langue
Eldebaran a écrit :
Je ne comprends pas. Sous prétexte que ça ne marchera pas avec ta version de FF, il ne faut pas rendre le code compatible avec les autres ? Smiley langue


C'est un peu cela ! NA !

Non ! Je blague !

En fait je me suis arraché les cheveux.. tu vois sur mon avatar ce qui m'en reste... à essayer de rendre mes codes compatibles avec le plus de trucs les plus exotiques possibles pour en finale me rendre compte que j'en laissais de coté un plus grand nombre encore à cause de choix de principes de fonctionnement... en finale cela casse un peu.

Je voulais donc dire à Jihen de faire attention si la compatibilité FF est son but que à cause de ce #]&#@ de [##@] player, il ne pourrait de toute façon pas y arriver.

Par ailleurs, il est vrai que, au nom de la grande (et justifiée) mode de l'accessibilité, je ne me gène pas pour rendre le plus public possible le fait que certaines sociétés, dont Macro[#@#, manifestent une volonté étonnante d'ignorance ou au minimum d'incompatibilité avec les architectures 64 bits. ET que :

VIVE GNASH !
Si je veux que mon site soit compatible avec Firefox c'est avant tout parce que je l'utilise. Smiley biggrin
L'autre raison est que je veux que le site soit accessible par le plus de monde possible, et forcer les gens à utiliser Internet Explorer pour pouvoir écouter la radio c'est pas terrible...

En fait si nous avons fait le choix de mettre en place un player sur le site c'est pour éviter d'avoir recours à des players externes qui ont besoin d'être installés pour pouvoir écouter quelque chose sur notre site (WMP, Winamp, Real One, etc...).
Mais si je n'arrive pas à le rendre compatible avec Firefox je crois que ce sera ma seule solution de secours.

A moins qu'il y ait une alternative au classid, mais comme mes connaissances sont assez maigres de ce coté je m'en remet à vous.

Merci pour vous réponses.


Pour aCOSwt : En bas du site j'ai spécifié qu'il était optimisé pour Firefox, et j'ai même mis une bannière (que l'on trouve ici) afin d'inviter les gens à télécharger la dernière version de ce merveilleux navigateur. Smiley cligne
Maintenant je ne sais pas si je dois continuer de dire qu'il est optimisé pour Firefox...
Ah j'ai trouvé du code supplémentaire en ce qui concerne le streaming, mais je ne sais pas si c'est ça qui fait qu'il n'est pas lu par Firefox par contre :

stream.php

<?
$streamname = "http://xxx.xxx.xxx.xxx"; // put in whatever stream you want to play 
$port = "8000"; // put in the port of the stream 
$path = "/"; // put in any extra path, this is usually just a / 

header("Content-type: audio/mpeg"); 
$sock = fsockopen($streamname,$port); 

fputs($sock, "GET $path HTTP/1.0\r\n"); 
fputs($sock, "Host: $streamname\r\n"); 
fputs($sock, "User-Agent: WinampMPEG/2.8\r\n"); 
fputs($sock, "Accept: */*\r\n"); 
fputs($sock, "Icy-MetaData:1\r\n"); 
fputs($sock, "Connection: close\r\n\r\n"); 


fpassthru($sock); 

fclose($sock); 
?>


Je vais essayer de passer le player au validator pour voir. Smiley cligne

Edit : Le player a un DTD en XHTML 1.0 Transitional au cas où.
Edit 2 : Mise à jour du script dans mon premier message après validation. Smiley smile
Modifié par Jihen (08 Dec 2006 - 19:32)
Et bien j'ai finalement trouvé la solution :

<!--[if !IE]> Standard XHTML object instanciation <!-->
	<object id="player" type="application/x-mplayer2" src="<?=$req_URI ?>" width="0" height="0">
	<!--><![endif]-->
	<!--[if IE]>
	<object id="player" classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="0" height="0">
	<![endif]-->
	<param name="URL" value="<?=$req_URI ?>" />
	<param name="AudioStream" value="1" />
	<param name="autostart" value="true" /> 
	</object>


En fait j'avais choisi un mauvais type pour Firefox, il fallait mettre : type="application/x-mplayer2"

Tout simplement. Smiley murf

Désolé pour le dérangement.