[Publication] Détection des lecteurs Flash
Écrit par Thibault Imbert | 13-08-2005

Introduction

Deux lecteurs Flash, 2 cas différents :

Lors de la consultation de fichier Swf dans une page de navigateur, vous utilisez un Lecteur Flash (ou Flash Player), pour lire et interpréter le contenu. Et c'est tout ! Le texte, le son, la vidéo sont lues uniquement grâce au lecteur !!

Il existe en fait 2 lecteurs, selon le navigateur que vous utilisez : l'ActiveX et le Plugin .
Donc ce n'est pas parce que vous avez installé une fois un lecteur, que tous vos navigateurs (NN, IE) vont être capables de lire les Swf ;)

Lorsque vous intégrez un Swf à une page Html (par la publication de Flash, ou directement dans Dream), le code Html comprend certains paramètres qui permettent de lire et d'afficher le Swf tel que vous l'avez souhaité.

Ces balises sont spécifiques, selon, à chacun de ces 2 lecteurs ! Les infos sont communes !

<object classid ="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="500" height="300">
<param name =movie value="r_flash/f_as/as_obcapab/systemCap.swf">
<param name =quality value=high>
<embed src ="r_flash/f_as/as_obcapab/systemCap.swf" quality=high pluginspage ="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type ="application/x-shockwave-flash" width="500" height="300">
</embed>
</object>

Balise Object pour IE PC (et aol)

1er mode de détection automatique : Penser au codebase à modifier dans la page HTML pour ne pas détecter systématiquement Flash 6.
Pour IE PC en effet, la détection du lecteur Flash (ActiveX) se fait automatiquement d'après ce codebase et le numéro stipulé. Si celui-ci n'est pas installé chez l'utilisateur, une boîte de dialogue demande à l'internaute s'il veut le charger.

Balise Embed pour IE NN Mac, NN PC, Opéra, Linux, Irix, Solaris

Il s'agit d'un plugin qui n'est pas détecté automatiquement, d'où problèmes...

Lisibilité, à quel format exporter :

D'après les dernières statistiques (janvier 2002), 95 % des internautes auraient le lecteur Flash. Celui-ci est implémenté dans les navigateurs que vous télécharger, sur Win 2000 (flash4), Win XP (flash5), QT, real etc...
Aujourd'hui, le souci est donc davantage de savoir quelle version a l'internaute (notamment si votre animation comprend de la programmation), que s'il a ou non le lecteur !

Notez qu'aucune différence graphique n'existe de Flash 3 à Flash 5 et que les actions de base sont aussi communes à ces versions.
(Quelques exceptions : évènement touche sur Bouton et loadMovie dans une cible, c'est du Flash 4...)
Pour des contenus simples, bannières de pub, animations linéaires (...), choisissez un export en Flash 3 - La version du lecteur est paramétrable dans Flash, sur le bouton "Lecteur Flash 6" de l'inspecteur des propriétés.

Solutions

Le moins efficace - Détecteur Flash de la version et de la présence du lecteur

Détection en Javascript (mais ne marche pas si Javascript enlevé et sur IE Mac, Opera..)
Il existe un paliatif consistant à effectuer la détection JS + détection VBS pour IE (fonctionne sur Mac et PC) - voir le MoockFPI

Le must mais faut s'y coller - Détecteur Flash de la version du lecteur

Faire un détecteur en Flash qui selon la version de l'internaute se comportera différemment selon ce que vous avez prévu dans le Swf détecteur. On appelle aussi ces détecteurs Flash, des sniffers. Ils exploitent les actions ou fonctionnalités sépcifiques à chaque version et qui ne seront pas interprétées par les autres versions. Voir les "ressources utiles", en bas de page.

Le plus simple mais il y a coupure dans la visite - Détecteur Flash de la présence du lecteur

Faire une page Html d'accueil demandant à la personne ne voyant pas le Swf que vous avez placé dans cette page, de télécharger le lecteur.

Mixte : Bien souvent, toutes ces techniques sont couplées, pour une efficacité totale ;) Voir les Kits cités dans "ressources utiles", en bas de page.

Les actions dans Flash

Notez que pour la détection du lecteur de Flash MX, nous détecterons bien la chaîne de caractère "6" et non "MX" ! Ouf :)

capabilities()

Pour récupérer la version du lecteur Flash MX et plus.
Renvoie un String décrivant la version du lecteur utilisé.

L'Objet Capabilities, de façon plus large permet de récupérer des informations sur l'environnement de vos internautes :

cap = System.capabilities;
vers = cap.version;

Télécharger cet exemple

systemCap.zip systemCap.zip (10.82 KB)

  • getVersion()
    Pour détecter Flash 5 et plus.
    Fonction (Flash 5 et plus) qui renvoie un String décrivant la version du lecteur utilisée.
    S'utilise avec les méthodes de l'objet String : .substr() et .substring()
    Exemple de chaîne récupérée : WIN 5,0,42,0
    (Flash 5 : la version 42 est la dernière release du lecteur sur Windows, la précédente étant la 30 - quelques modifications ont été faites, notamment sur l'XML !)

  • $version
    Pour détecter Flash 4.11 et plus.
    Propriété qui renvoie un string décrivant la version du lecteur utilisé (CF ci dessus).
    S'utilise avec la fonction de chaîne : substring() ce coup-ci, qui est aussi du Flash 4 !
    $version, par sa compatibilité reste le moyen le plus sûr de créer une détection efficace. Le détecteur cité dans la section suivante utilise cette propriété.

Autres ressources utiles

Détecteur du lecteur Flash 6 et moins

 

 detect6.zip detect6.zip (6.75 KB)

 
Dernière mise à jour : 12-09-2006