11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je cherche comment détecter flash par javascript (pour avertir l'utilisateur sur une page avant d'utiliser mes appli en flash). j'ai réussit pour java, mais en flash, je vois que des tutos pour remplacer par une image ou une anim flash, moi j'aimerais faire en texte seul avec affichage true/false, mais comment faire? Smiley murf

@++
Modérateur
Salut,

Est-ce que ceci répond à ta demande ? Smiley smile


function detectFlash()
{
	if( navigator.mimeTypes.length > 0 )
	{
		return navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin != null;
	}
	else if( window.ActiveXObject )
	{
		try
		{
			new ActiveXObject( "ShockwaveFlash.ShockwaveFlash" );
			return true;
		}
		catch( oError )
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}


Il y a çà aussi :
Kit de détection
Modifié par koala64 (22 Jul 2006 - 08:55)
koala64 a écrit :
Salut,

Est-ce que ceci répond à ta demande ? Smiley smile


function detectFlash()
{
	if( navigator.mimeTypes.length > 0 )
	{
		return navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin != null;
	}
	else if( window.ActiveXObject )
	{
		try
		{
			new ActiveXObject( "ShockwaveFlash.ShockwaveFlash" );
			return true;
		}
		catch( oError )
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}


Il y a çà aussi :
Kit de détection



merci Smiley biggrin


mais comment rajouter en html pour que le visiteur sache s'il a flash ou pas?
pour exemple, voici ma fonction pour java:

function JavaCheck()
{
	var html = '<span>\n';
	var status = 'pas installé';
	if (navigator.javaEnabled()) status = 'Installé';
	html += '\t\t <span style="font-weight: bold;">'+status+'<\/span>\n';
        if (status == 'Installé')
	{
		html += '\t\t<span style="font-weight: bold; color: green;">donc pas besoin de télécharger java!</span>\n';
	}
	if (status == 'pas installé')
	{
		html += '\t\t<span style="font-weight: bold; color: red;">donc vous avez besoin de télécharger java!</span>: <a class="info" target="_blank" href="http://www.java.com/fr/download/manual.jsp" title="java">j\'ai pas java, beuh!</a>\n';
	}
	html += '<\/span>\n';
	return html;
}
Modérateur
Ben, par exemple, sous forme d'alerte, çà donne:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
		<title>Exemple</title>
		<script type="text/javascript">
		<!--

function detectFlash()
{
	var sPasCool = "pas cool! Le videur veut pas de toi... t'as pas pris ton Flash...  [decu]";
	var sCool = "cool! T'as ton Flash ! ^^";

	if( navigator.mimeTypes.length > 0 )
	{
		alert(sCool);
		return navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin != null;
	}
	else if( window.ActiveXObject )
	{
		try
		{
			alert(sCool);
			return new ActiveXObject( "ShockwaveFlash.ShockwaveFlash" );
		}
		catch( oError )
		{
			return alert(sPasCool);
		}
	}
	else
	{
		return alert(sPasCool);
	}
}
window.onload = detectFlash;

		//-->
		</script>
	<head>
	<body>
	<body>
</html>
Modérateur
L'alerte en cas présence du plugin est inutile mais dans le cas contraire, ce qui serait bien, c'est que tu profites de l'alerte pour prévenir l'utilisateur d'où se trouve Flash...
koala, pour remplacer les alert par du html je fais comment?

a écrit :
L'alerte en cas présence du plugin est inutile mais dans le cas contraire, ce qui serait bien, c'est que tu profites de l'alerte pour prévenir l'utilisateur d'où se trouve Flash...


Justement Koala, pour java j'ai mis le lien pour aller le dl, et j'ai rajouté en visibilité pour si c'est installé = vert; pas installé = rouge^^
Modifié par -fredo- (23 Jul 2006 - 22:06)
Modérateur
Bon, voilà comment l'adapter alors Smiley cligne

Dans ce script, je crée un paragraphe qui vient se placer juste avant la fermeture du body. Suivant le cas, il porte l'id 'cool' définit par la variable sCId ou l'id 'pascool' définit par la variable sPCId. Tu peux donc les mettre en forme via CSS avec pourquoi pas un background. Les textes qui s'affichent sont définis par les variables sCool et sPasCool. Si c'est le cas 'pascool', un lien vient se placer en fin de paragraphe pour le téléchargement. Tu trouveras toutes les définitions de variable en début de script. Libre à toi de changer les valeurs si tu le souhaites.


function detectFlash()
{

	/**/ /* Les valeurs derrière lesquelles se trouvent ses sigles peuvent être modifiées. [smile] */

	var sPasCool = "pas cool! Le videur veut pas de toi... t'as pas pris ton Flash...  [decu] ... mais tu le trouveras "; /**/
	var sPCUrl = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&Lang=French&P5_Language=French"; /**/
	var sPCTextA = "ici."; /**/
	var sPCId = "pascool"; /**/
	var bPC = 1;
	var sCool = "cool! T'as ton Flash ! ^^"; /**/
	var sCId = "cool"; /**/
	var sCUrl = "";
	var sCTextA = "";
	var bC = 0;

	if( navigator.mimeTypes.length > 0 )
	{
		scribe(sCool,sCId,sCUrl,sCTextA,bC);
		return navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin != null;
	}
	else if( window.ActiveXObject )
	{
		try
		{
			scribe(sCool,sCId,sCUrl,sCTextA,bC);
			return new ActiveXObject( "ShockwaveFlash.ShockwaveFlash" );
		}
		catch( oError )
		{
			return scribe(sPasCool,sPCId,sPCUrl,sPCTextA,bPC);
		}
	}
	else
	{
		return scribe(sPasCool,sPCId,sPCUrl,sPCTextA,bPC);
	}
}
function scribe(sTextP,sId,sUrl,sTextA,b)
{
	var oBody = document.getElementsByTagName('body')[0];
	var oP = document.createElement('p');
	var oTextP = document.createTextNode(sTextP);

	if( b == 1 )
	{
		var oA = documentCreateElement('a');
		var oTextA = document.createTextNode(sTextA);
		oA.setAttribute('href',sUrl);
	}

	oP.setAttribute('id',sId);

	if( b == 1 ) oA.appendChild(oTextA);
	oP.appendChild(oTextP);
	if( b == 1 ) oP.appendChild(oA);
	oBody.appendChild(oP);
}
window.onload = detectFlash;

Modifié par koala64 (23 Jul 2006 - 23:09)
merci Smiley biggrin

et pour l'afficher a l'intérieur du body? Smiley langue

pourquoi utiliser pleins de variables?

on peut pas faire comme avec mon exemple avec java?
si flash= "installé"
pas flash ="pas installé"
if (status == 'installé') = patati patata
if (status == 'pas installé') = lien de dl


ton code est complexe pr le débutant javascript que je suis Smiley langue
Modérateur
Hello,

-fredo- a écrit :
et pour l'afficher a l'intérieur du body?


alors que...

La bestiole a écrit :
je crée un paragraphe qui vient se placer juste avant la fermeture du body.


Smiley biggol

Pour le voir, regarde ton code source à l'aide de la barre d'outils webdeveloper de Firefox en cliquant sur "voir source" puis "voir le code source généré".

-fredo- a écrit :
pourquoi utiliser pleins de variables?


T'as de la chance, je peaufine toujours au fur et à mesure. Smiley ravi Dans le script ci-dessous, j'ai simplifié... Il y en a moins. Dorénavant, la fonction scribe() accepte un nombre variable de... variables Smiley langue qui se trouvent toutes définies au début de la fonction detectFlash(). Une fonction dans laquelle tu fais passer tes arguments sous forme de variables est une fonction réutilisable. C'est donc plus souple. Dans ce script, les seules valeurs que tu peux modifier sont les variables délimitées par les commentaires, la contrainte étant que tu n'y mets que du texte. Autrement dit, tu peux obtenir le même comportement que ta fonction si c'est ce que tu souhaites.


function detectFlash()
{

	/*******************************************************************
	Les valeurs des variables ci-dessous peuvent être modifiées. [smile]
	Le reste du script... pas touche ! ^^
	*******************************************************************/

	var sPasCool = "pas cool! Le videur veut pas de toi... t'as pas pris ton Flash...  [decu] ... mais tu le trouveras ";
	var sPCUrl = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&Lang=French&P5_Language=French";
	var sPCTextA = "ici.";
	var sPCId = "pascool";
	var sCool = "cool! T'as ton Flash ! ^^";
	var sCId = "cool";

	/******************************************************************/

	if( navigator.mimeTypes.length > 0 )
	{
		scribe(sCool,sCId);
		return navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin != null;
	}
	else if( window.ActiveXObject )
	{
		try
		{
			scribe(sCool,sCId);
			return new ActiveXObject( "ShockwaveFlash.ShockwaveFlash" );
		}
		catch( oError )
		{
			return scribe(sPasCool,sPCId,sPCUrl,sPCTextA);
		}
	}
	else
	{
		return scribe(sPasCool,sPCId,sPCUrl,sPCTextA);
	}
}
function scribe()
{
	var oBody = document.getElementsByTagName('body')[0];
	var oP = document.createElement('p');
	var oTextP = document.createTextNode(arguments[0]);

	if( arguments.length == 4 )
	{
		var oA = documentCreateElement('a');
		var oTextA = document.createTextNode(arguments[3]);
		oA.setAttribute('href',arguments[2]);
	}

	oP.setAttribute('id',arguments[1]);

	if( arguments.length == 4 ) oA.appendChild(oTextA);
	oP.appendChild(oTextP);
	if( arguments.length == 4 ) oP.appendChild(oA);
	oBody.appendChild(oP);
}
window.onload = detectFlash;


Déjà, je te dirais qu'à défaut de tout comprendre, tu devrais essayer de voir comment çà s'articule... Smiley cligne
Modifié par koala64 (24 Jul 2006 - 07:28)
re^^

alors avec le dernier code j'ai deux "cool t'as ton flash!" dans ma page et "true" qui se met bien dans la phrase ou je veux insérer le javascript. Smiley murf

pour les variables pk pas créer seulement 2? sPasCool et sCool allégerait le code..
Modérateur
Salut,

a écrit :
alors avec le dernier code j'ai deux "cool t'as ton flash!" dans ma page et "true" qui se met bien dans la phrase ou je veux insérer le javascript. Smiley murf


Chez moi, y'a pas de soucis, que ce soit sous Fx, IE ou Opera... Smiley cligne La phrase n'apparait qu'une fois, et pas de true qui vient s'immiscer...

a écrit :
pour les variables pk pas créer seulement 2? sPasCool et sCool allégerait le code..


As-tu regardé le code que çà génèrait comme je te l'ai dit ? ( dans les 2 cas ) ... Je n'en ai pas l'impression... Et à ton avis, pourquoi mettre un id sur le paragraphe ?
On pourrait même supprimer toutes les variables mais si tu veux un code léger, ce n'est certainement pas la meilleure méthode car tes fonctions deviendraient inutilisables en dehors de ce contexte... Si tu fais des fonctions réutilisables ( grâce à ces variables ), à la longue, ton code n'en sera que plus léger puisqu'il sera inutile de répéter plusieurs fois les mêmes actions...

Après, si celà ne te suffit pas tu n'as qu'à utiliser des raccourcis, raccourcir le nom de tes variables et compresser ton code... mais je te le déconseille vivement tant que tu n'as pas une grosse bibliothèque de fonctions dont tu es sûr de ne plus y toucher, faute de quoi, ton code va devenir totalement illisible...