Rechercher : dans
Par :

[JavaScript] Problème avec Firefox

Dernière réponse le 28 mai 2009 à 07:07:06 wido22, le 23 mai 2009 à 14:59:18 
 Signaler ce message aux modérateurs

Bonjour,
voila, je suis en train de créer mon propre site pour héberger un jeu flash que je viens de créer. Pour cela j'utilise du JavaScript avec Ajax et php.

Mon problème vient du faite que lorsque j'ouvre mon site avec Firefox, et que je clic sur "Game", le jeu flash n'apparait pas, alors qu'avec IE, ça s'affiche correctement.

Techniquement lorsque l'on clic sur "Game", cela appel une fonction XMLHttpRequest(); et une page php echo tout le code html pour l'insertion d'un flash. Ensuite une autre fonction créer une fenêtre et affiche le contenu de la réponse dans cette fenêtre.

Je ne pense pas que le problème vienne du code html pour l'insertion d'un flash car si je demande directement la page php sous Firefox, le jeu s'affiche corectement.

Vous pouvez voir mon site sur : http://widos.game.free.fr/
(le site est encore en test, donc pour l'instant, le design, c'est pas encore ça :p )

Code HTML:


<li id="bt_jeu" onmouseover="selec('jeu');" onclick="choix('bt_jeu');" >Game</li>



Code JavaScript:

var affichage;

function choix(elmt){
	switch(elmt)
	{
		case "bt_news":
			bouton = document.getElementById('bt_news');
			bouton.style.display = "none";
			nbFenetre = "news";
			request(readData,100,200,500,200,"news.php");
		break;
		
		case "bt_jeu":
			bouton = document.getElementById('bt_jeu');
			bouton.style.display = "none";
			nbFenetre = "jeu1";
			request(readData,150,230,716,500,"jeu1.php");
		break;
                
                (etc ....)


	}
}

function request(callback,left,top,width,height,page) {
	if (xhr && xhr.readyState != 0) {
		alert("Error 1");
		return;
	}
	
	var xhr = getXMLHttpRequest();
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			callback(xhr.responseText,left,top,width,height);
		}
	};
	
	var message = "";
	
	xhr.open("POST", page, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("message="+message);
}

function readData(sData,left,top,width,height) {
	if(sData==33)
	{
		affichage="<div id='logout' ><p>You are now logout.</p><p>This window will close automatically in 3 seconds.</p></div>";
		setTimeout('connecter(0)',3000);
	}
	else
	{
		affichage=sData;
	}
	creer_fenetre(left,top,width,height);
}

function getXMLHttpRequest() {
	var xhr = null;
	
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Error 2");
		return null;
	}
	
	return xhr;
}

function creer_fenetre(left,top,width,height) {
    var fenetre = document.createElement("div");
    fenetre.className="fenetre";
    fenetre.style.left=left+"px";
    fenetre.style.top=top+"px";
    fenetre.style.width=width+"px";
    fenetre.style.height=height+"px";
    addEvent(fenetre,"mousedown",function (){premier_plan(fenetre)});
	
    var haut = document.createElement("div");
    haut.className="haut";
    addEvent(haut,"mousedown",function (event){commencer_deplacement(event,fenetre)});
    addEvent(haut,"mouseup",arreter_deplacement);
    var haut_gauche = document.createElement("div");
    haut_gauche.className="haut_gauche";
    var haut_droite = document.createElement("div");
    haut_droite.className="haut_droite";
    var haut_centre = document.createElement("div");
    haut_centre.className="haut_centre";
	haut_centre.innerHTML="<div class='close' onclick=\"fermer('"+nbFenetre+"');\" ></div>";
    haut.appendChild(haut_gauche);
    haut.appendChild(haut_droite);
    haut.appendChild(haut_centre);
    fenetre.appendChild(haut);
	
    var milieu = document.createElement("div");
    milieu.className="milieu";
    var milieu_gauche = document.createElement("div");
    milieu_gauche.className="milieu_gauche";
    var milieu_droite = document.createElement("div");
    milieu_droite.className="milieu_droite";
    var milieu_centre = document.createElement("div");
    milieu_centre.className="milieu_centre";

	milieu_centre.innerHTML=affichage;
	affichage="";

    milieu.appendChild(milieu_gauche);
    milieu.appendChild(milieu_droite);
    milieu.appendChild(milieu_centre);
    fenetre.appendChild(milieu);
   
    var bas = document.createElement("div");
    bas.className="bas";
    var bas_gauche = document.createElement("div");
    bas_gauche.className="bas_gauche";
    var bas_droite = document.createElement("div");
    bas_droite.className="bas_droite";
    var bas_centre = document.createElement("div");
    bas_centre.className="bas_centre";
    bas.appendChild(bas_gauche);
    bas.appendChild(bas_droite);
    bas.appendChild(bas_centre);
    fenetre.appendChild(bas);
 
    premier_plan(fenetre); //Met au premier plan la fenêtre
    document.body.appendChild(fenetre);
}

etc...


Code PHP: (merci dreamweaver :p )

<?php
echo'

<div id="jeu1">
<script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="700" height="500" id="FlashID" tabindex="200" title="ReflexionBeta0.9">
  <param name="movie" value="Jeu/ReflexionBeta0.9.swf" />
  <param name="quality" value="high" />
  <param name="wmode" value="opaque" />
  <param name="swfversion" value="6.0.65.0" />
  <!-- Cette balise <param> invite les utilisateurs de Flash Player en version 6.0 r65 et ultérieure à télécharger la version la plus récente de Flash Player. Supprimez-la si vous ne voulez pas que cette invite soit visible. -->
  <param name="expressinstall" value="Scripts/expressInstall.swf" />
  <!-- La balise <object> suivante est destinée aux navigateurs autres qu\'IE. Supprimez-la d\'IE à l\'aide d\'IECC. -->
  <!--[if !IE]>-->
  <object type="application/x-shockwave-flash" data="Jeu/ReflexionBeta0.9.swf" width="700" height="500">
    <!--<![endif]-->
    <param name="quality" value="high" />
    <param name="wmode" value="opaque" />
    <param name="swfversion" value="6.0.65.0" />
    <param name="expressinstall" value="Scripts/expressInstall.swf" />
    <!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d\'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
    <div>
      <h4>Le contenu de cette page n&eacute;cessite une version plus r&eacute;cente d’Adobe Flash Player.</h4>
      <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtenir le lecteur Adobe Flash" width="112" height="33" /></a></p>
    </div>
    <!--[if !IE]>-->
  </object>
  <!--<![endif]-->
</object>
<script type="text/javascript">
<!--
swfobject.registerObject("FlashID");
//-->
</script>
<div>';

?>



Merci d'avance pour vos réponse.
Configuration: Windows Vista
Firefox 3.0.5

Meilleures réponses pour « [JavaScript] Problème avec Firefox » dans :
[Firefox] Personnaliser les pages web avec Greasemonkey VoirC'est quoi, GreaseMonkey ? Exemple 1 Exemple 2 XPath Fonctions utilitaires removeElement() removeAttributeOfElement() setAttributeOfElement() injectCSS() Exemple 3 Liens C'est quoi, GreaseMonkey ? GreaseMonkey est une extension...
Optimiser Firefox VoirOptimisation avec Haut Débit Si votre ordinateur a un processeur peu puissant Optimiser l'utilisation de la mémoire Logiciel d'optimisation de Firefox J'ai fait une fausse manipulation J'ai créé une valeur/chaîne de trop J'ai mal attribué...
[Mozilla Firefox] Sauvegarder les paramètres VoirSauvegarder / Restaurer les paramètres de Firefox, les marque-pages, historique et les extensions installées Commencez par afficher les fichiers cachés. Sous Vista, il faut s'approprier le dossier C:\users\Utilisateur*\Application Data pour...
Télécharger Portable Firefox VoirMozilla Firefox est un navigateur internet performant et personnalisable. L'interface possède des onglets pour une gestion des fenêtres plus efficace. Il possède également un gestionnaire de téléchargement. Portable Firefox est la version portable...
DHTML - Animer des éléments VoirLe principe L'animation des éléments présents sur une page Web se fait en modifiant leur propriété (position, hauteur, largeur, visibilité, z-index, ...) ou en utilisant leur méthodes (fonctions associées à un élément). Cela ne peut se faire qu'à...
Javascript - L'objet window VoirLes particularités de l'objet window L'objet window est l'objet par excellence dans Javascript, car il est le parent de chaque objet qui compose la page web, il contient donc : l'objet document: la page en elle-même l'objet location: le lieu de...
Javascript - Les événements VoirQu'appelle-t-on un événement? Les événements sont des actions de l'utilisateur, qui vont pouvoir donner lieu à une interactivité. L'événement par excellence est le clic de souris, car c'est le seul que le HTML gère. Grâce au Javascript il est...

1

wido22, le 24 mai 2009 à 06:58:38

Enfaite maintenant, sous Firefox, le flash apparait puis disparait tout de suite, je ne comprend vraiment pas pourquoi :/

Répondre à wido22

2

wido22, le 28 mai 2009 à 04:23:26

Je me répond à moi même car j'ai trouvé la solution.

Il fallait juste que dans mon script, je fasse la détection du navigateur utiliser par :

if(navigator.appName == "Microsoft Internet Explorer")
	{
		request(readData,150,230,716,500,"jeu1.php",0);
	}
	else
	{
		request(readData,150,230,716,500,"jeu1.php",1);
	}


Et ensuite envoyer une requête avec un paramètre extra en plus pour que php sache de quel navigateur il s'agit, afin d'envoyer le bon code html.

("ext", c'est mon paramètre en extra )

Code PHP:

if($_POST['ext']==0)
{
	echo'
	<div id="jeu1">
	<script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="700" height="500" id="FlashID" tabindex="200" title="ReflexionBeta0.9">
	  <param name="movie" value="Jeu/ReflexionBeta0.9.swf" />
	  <param name="quality" value="high" />
	  <param name="wmode" value="opaque" />
	  <param name="swfversion" value="6.0.65.0" />
	  <!-- Cette balise <param> invite les utilisateurs de Flash Player en version 6.0 r65 et ultérieure à télécharger la version la plus récente de Flash Player. Supprimez-la si vous ne voulez pas que cette invite soit visible. -->
	  <param name="expressinstall" value="Scripts/expressInstall.swf" />
	  <!-- La balise <object> suivante est destinée aux navigateurs autres qu\'IE. Supprimez-la d\'IE à l\'aide d\'IECC. -->
	  <!--[if !IE]>-->
	  <object type="application/x-shockwave-flash" data="Jeu/ReflexionBeta0.9.swf" width="700" height="500">
		<!--<![endif]-->
		<param name="quality" value="high" />
		<param name="wmode" value="opaque" />
		<param name="swfversion" value="6.0.65.0" />
		<param name="expressinstall" value="Scripts/expressInstall.swf" />
		<!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d\'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
		<div>
		  <h4>Le contenu de cette page n&eacute;cessite une version plus r&eacute;cente d’Adobe Flash Player.</h4>
		  <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtenir le lecteur Adobe Flash" width="112" height="33" /></a></p>
		</div>
		<!--[if !IE]>-->
	  </object>
	  <!--<![endif]-->
	</object>
	<script type="text/javascript">
	<!--
	swfobject.registerObject("FlashID");
	//-->
	</script>
	<div>';
}
else
{
	echo'
	<div id="jeu1">
	<script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
	  <!--[if !IE]>-->
	  <object type="application/x-shockwave-flash" data="Jeu/ReflexionBeta0.9.swf" width="700" height="500">
		<!--<![endif]-->
		<param name="quality" value="high" />
		<param name="wmode" value="opaque" />
		<param name="swfversion" value="6.0.65.0" />
		<param name="expressinstall" value="Scripts/expressInstall.swf" />
		<!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d\'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
		<div>
		  <h4>Le contenu de cette page n&eacute;cessite une version plus r&eacute;cente d’Adobe Flash Player.</h4>
		  <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtenir le lecteur Adobe Flash" width="112" height="33" /></a></p>
		</div>
		<!--[if !IE]>-->
	  </object>
	<script type="text/javascript">
	<!--
	swfobject.registerObject("FlashID");
	//-->
	</script>
	<div>';
}

?>

Répondre à wido22

3

 wido22, le 28 mai 2009 à 07:07:06

Je me répond à moi même car j'ai trouver la solution.

Il fallait simplement ajouter dans le script JavaScript, une détection du navigateur, et ainsi changer la demande par XMLHttpRequest() pour recevoir un code différent pour les autres navigateur qu'IE.

Répondre à wido22