SWFObject est une méthode simple à utiliser et respectueuse des normes permettant d'intégrer du contenu Flash dans une page, en utilisant un minuscule fichier JavaScript. Cette page vous présente comment utiliser SWFObject 2.
Sommaire
SWFObject 2 :
SWFObject 2 :
L'article de "A List Apart" à propos de l'insertion de contenu Flash Flash [ http://www.alistapart.com/articles/flashembedcagematch/ ] décrit toute la rationalité mise en place dans SWFObject 2.
SWFObject 2 utilise de manière simple JavaScript pour passer outre les problèmes qui ne peuvent pas être résolus uniquement avec des balises. Cette méthode :
SWFObject 2 offre deux méthodes différentes pour insérer un contenu Flash :
Les avantages de la méthode de publication statique sont :
Les avantages de la méthode de publication dynamique sont :
Les balises de base de SWFObject utilise la méthode d'objets imbriqués (avec les commentaires conditionnels propriétaires d'Internet Explorer) [ http://www.alistapart.com/articles/flashembedcagematch/ ] pour garantir un support optimal sur un grand nombre de navigateurs en utilisant exclusivement des balises, tout en restant conforme aux normes et standards web, et en utilisant un contenu alternatif [ http://www.bobbyvandersluis.com/flashembed/testsuite/ ]:
<!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" lang="en" xml:lang="en"> <head> <title>SWFObject - étape 1</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <div> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">
<param name="movie" value="myContent.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">
<!--<![endif]-->
<p>Alternative content</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body> </html>
NOTE : La méthode des objets imbriqués requiert une double definition d'object (l'object extérieur cible Internet Explorer, tandis que l'object intérieur vise tous les autres navigateurs). Vous devrez donc définir deux fois les attributs des object et les éléments imbriqués param.
Attributs requis :
classid (object extérieur uniquement, la valeur est toujours clsid:D27CDB6E-AE6D-11cf-96B8-444553540000) type (object intérieur uniquement, la valeur est toujours application/x-shockwave-flash) data (object intérieur uniquement, définie l'URL d'un SWF) width (pour les deux éléments object, définie la largeur d'un SWF) height (pour les deux éléments object, définie la hauteur d'un SWF) Élément param requis :
movie (l'élément object extérieur uniquement, définie l'URL d'un SWF) NOTE : Nous vous conseillons de ne pas utiliser l'attribut codebase pour pointer vers l'URL de l'installation du plug-in Flash sur les serveurs d'Adobe, car c'est illégal d'après les spécifications, qui restreignent son accès au domaine courant du document. Nous vous recommandons en revanche d'utiliser à la place un contenu alternatif avec un message subtile et réfléchi, invitant l'utilisateur à participer à une expérience plus riche en téléchargeant le plug-in Flash.
Vous pouvez ajouter des attributs optionnels souvent utilisés [ http://www.w3schools.com/tags/tag_object.asp ] à l'élément object:
idname (nom)classalignVous pouvez aussi utiliser les éléments param optionnels spécifiques à Flash [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701 ] :
play (lecture)loop (boucle)menuquality (qualité visuelle)scale (échelle, agrandissement)salign (alignement)wmode (mode d'apparence de la fenêtre)bgcolor (couleur d'arrière-plan)baseswliveconnectflashvars (variables flash)devicefont [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_13331 ] (police du périphérique)allowscriptaccess [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_16494 ] et [ http://www.adobe.com/go/kb402975 ] (autoriser l'accès du script)seamlesstabbing [ http://www.adobe.com/support/documentation/en/flashplayer/7/releasenotes.html ] (navigation transparente par tabulations)allowfullscreen [ http://www.adobe.com/devnet/flashplayer/articles/full_screen_mode.html ] (autoriser le plein écran)allownetworking [ http://livedocs.adobe.com/flash/9.0/main/00001079.html ] (autoriser les accès réseaux)L'élémentobject vous permet d'imbriquer un contenu alternative à l'intérieur même de celui-ci, qui peut être affiché lorsque Flash n'est pas installé ou pas supporté. Ce contenu sera par ailleurs référencé par les moteurs de recherche, en faisant un outil idéal pour créer du contenu adapté à ces moteurs de recherche. En résumé, vous devez utiliser du contenu alternatif lorsque vous aimez créer un contenu accessible aux personnes surfant sur le Web sans plug-in [ http://www.adobe.com/devnet/flash/articles/progressive_enhancement_03.html ], lorsque vous souhaitez créer du contenu adapté aux moteurs de recherche [ http://www.adobe.com/devnet/flash/articles/progressive_enhancement_04.html ] ou lorsque vous souhaitez prévenir vos visiteurs qu'ils peuvent bénéficier d'une riche expérience utilisateur en téléchargeant le plug-in Flash.
La bibliothèque SWFObject est un fichier JavaScript externe. SWFObject sera execute dès que le fichier sera lu et appliquera toutes les manipulations au DOM dès que celui sera chargé — pour tous les navigateurs qui le supporte, tels que Internet Explorer, Firefox, Safari et Opera 9+ — ou dans d'autres cas lorsque l'évènement onload survient :
<!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" lang="en" xml:lang="en">
<head>
<title>SWFObject - step 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<div>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">
<param name="movie" value="myContent.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">
<!--<![endif]-->
<p>Alternative content</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
D'abord, ajoutez un id unique au tag de l'object extérieur. Celui-ci définit votre contenu Flash. Ensuite, ajoutez la méthode swfobject.registerObject :
id utilise dans la balise.<!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" lang="en" xml:lang="en">
<head>
<title>SWFObject - step 3</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.registerObject("myId", "9.0.0", "expressInstall.swf");
</script>
</head>
<body>
<div>
<object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">
<param name="movie" value="myContent.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">
<!--<![endif]-->
<p>Alternative content</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
swfobject.getObjectById(objectIdStr) [ http://code.google.com/p/swfobject/wiki/api ] La méthode d'insertion dynamique de SWFObject suit un processus d'amélioration progressif [ http://www.adobe.com/devnet/flash/articles/progressive_enhancement.html ] et remplace du contenu alternatif HTML par du contenu Flash lorsque le support du Flash et du JavaScript est suffisant. Définissez d'abord votre contenu alternatif, et nommez-le en lui attribuant un identifiant id :
<!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" lang="en" xml:lang="en">
<head>
<title>SWFObject dynamic embed - step 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div id="myContent">
<p>Alternative content</p>
</div>
</body>
</html>
La bibliothèque SWFObject est un fichier JavaScript externe. SWFObject sera execute dès que le fichier sera lu et appliquera toutes les manipulations au DOM dès que celui sera chargé – pour tous les navigateurs qui le supporte, tells que Internet Explorer, Firefox, Safari et Opera 9+ – ou dans d'autres cas lorsque l'évènement onload survient :
<!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" lang="en" xml:lang="en">
<head>
<title>SWFObject dynamic embed - step 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<div id="myContent">
<p>Alternative content</p>
</div>
</body>
</html>
swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes) possède cinq arguments obligatoires, et quatre optionnels:
swfUrl (Chaîne, obligatoire) spécifie l'URL de votre SWF id (Chaîne, obligatoire) spécifie l'id de l'élément HTML (où se trouve le contenu alternatif) que vous souhaitez remplacer par votre contenu Flashwidth (Chaîne, obligatoire) spécifie la largeur de votre SWF height (Chaîne, obligatoire) spécifie la hauteur de votre SWF version (Chaîne, obligatoire) spécifie la version du lecteur Flash pour laquelle votre SWF a été publié (le format est: "majeur.mineur.distribution") flashvars (Objet, optionnel) spécifie les flashvars avec les paires name:valueparams (Objet, optionnel) spécifie les params de l'élément object element avec les paires name:valueattributes (Objet, optionnel) spécifie les attributs de object avec les paires name:valueNOTE : Vous pouvez omettre les paramètres optionnels, aussi longtemps que vous respectez l'ordre de ces paramètres. Si vous ne souhaitez pas utiliser un paramètre optionnel, mais que voulez utilisez les paramètres optionnels suivants, vous pouvez simplement lui appliquer la false. Pour les flashvars, params et attributes des objets JavaScript, vous pouvez également leur passer une valeur vide : {}.
<!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" lang="en" xml:lang="en">
<head>
<title>SWFObject dynamic embed - step 3</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0");
</script>
</head>
<body>
<div id="myContent">
<p>Alternative content</p>
</div>
</body>
</html>
Vous pouvez ajouter les attributs optionnels souvent utilisés [ http://www.w3schools.com/tags/tag_object.asp ] à l'élément object:
id (NOTE : lorsqu'il n'est pas défini, l'élément object hérite automatique de l'id de l'élément conteneur du contenu alternatifname (nom)styleclass (utilisé à la place de class, qui est un mot-clé réservé du langage ECMA4) align (alignement)Vous pouvez aussi utiliser les éléments param optionnels spécifiques à Flash [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701 ] :
play (lecture)loop (boucle)menuquality (qualité visuelle)scale (échelle, agrandissement)salign (alignement)wmode (mode d'apparence de la fenêtre)bgcolor (couleur d'arrière-plan)baseeswliveconnectflashvars (variables flash)devicefont [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_13331 ] (police du périphérique)allowscriptaccess [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_16494 ] et [ http://www.adobe.com/go/kb402975 ] (autoriser l'accès du script)seamlesstabbing [ http://www.adobe.com/support/documentation/en/flashplayer/7/releasenotes.html ] (tabulation sans fin)allowfullscreen [ http://www.adobe.com/devnet/flashplayer/articles/full_screen_mode.html ] (autoriser le plein écran)allownetworking [ http://livedocs.adobe.com/flash/9.0/main/00001079.html ] (autoriser les accès réseaux)flashvars, params et attributes d'objets ?La meilleure façon de définir des objets JavaScript en utilisant la notation d'objet littéral ressemble à ceci :
<script type="text/javascript"> var flashvars = {}; var params = {}; var attributes = {}; swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars, params, attributes); </script>
Vous pouvez ajouter votre paires name:value quand vous définissez l'objet (NOTE : vérifiez que vous n'utilisez pas une virgule devant la dernière paire name:value paire à l'intérieur d'un objet)
<script type="text/javascript"> var flashvars = { name1: "hello"; name2: "world"; name3: "foobar"; }; var params = { menu: "false"; }; var attributes = { id: "myDynamicContent" name: "myDynamicContent" }; swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars, params, attributes); </script>
Ou ajouter des propriétés et valeurs après la création en ajoutant une notation concaténée par point :
<script type="text/javascript"> var flashvars = {}; flashvars.name1 = "hello"; flashvars.name2 = "world"; flashvars.name3 = "foobar"; var params = {}; params.menu = "false"; var attributes = { id: "myDynamicContent" name: "myDynamicContent" }; swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars, params, attributes); </script>
Qui peut aussi être écrit ainsi (la version raccourcie la moins lisible, pour les hard-programmers qui adore le codage en une ligne...) :
<script type="text/javascript"> swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0","expressInstall.swf", {name1:"hello",name2:"world",name3:"foobar"}, {menu:"false"}, {id:"myDynamicContent",name:"myDynamicContent"}); </script>
Si vous ne souhaitez pas utiliser un argument optionnel, vous pouvez définir cette option avec false ou en tant qu'object vide (NOTE : depuis SWFObject 2.1, vous pouvez également le définir avec null ou 0) :
<script type="text/javascript"> var flashvars = false; var params = {}; var attributes = { id: "myDynamicContent" name: "myDynamicContent" }; swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars, params, attributes); </script>
L'objet flashvars est une manière raccourcie utilisée ici pour des raisons de facilité d'utilisation. Vous pouvez potentiellement l'ignorer et spécifier flashvars via l'objet params :
<script type="text/javascript"> var flashvars = false; var params = { menu: "false", flashvars: "name1=hello&name2=world&name3=foobar" }; var attributes = { id: "myDynamicContent" name: "myDynamicContent" }; swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars, params, attributes); </script>
swfobject au lieu de SWFObject.id, object sera automatiquement hérité de l'id de l'élément conteneur HTML de votre contenu alternatif.id, l'élément object sera automatiquement hérité de l'id de l'élément conteneur HTML de votre contenu alternatif.swfobject.createCSS(selStr, declStr) dans [ http://code.google.com/p/swfobject/wiki/api ].SWFObject 2 NE supporte PAS les types XML MIME, par choix de conception.
Nous avons de nombreuses raisons de ne pas le :
La function de commentaries de ce wiki a été désactivée pour éviter les spasm et les abus.
Si vous avez des questions/commentaires à propos de SWFObject ou de sa documentation, ou si vous recontrez des problèmes avec l'implémentation :
Si vous trouver des bugs ou souhaitez proposer de futures améliorations, vous pouvez remplir une demande sur la page « Issues » de SWFObject [ http://code.google.com/p/swfobject/issues/list ].
Cette page a été rédigée dans le but de fournir aux Internautes francophones une document technique dans leur langue pour SWFObject. Vous pouvez donc consulter la page officiel sur Google Code, retrouver le code source original du projet SWFObject sur Google Code ou encore consulter le Wiki original de la documentation.
Version actuelle de SWFObject : 2.1
Cette page est hébergée par le site Égypte. Voyez aussi ce lien