Remplacement d'une animation flash par une photo via test de plugin [Résolu]

Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009
- - Dernière réponse : Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
- 17 avril 2009 à 15:00
Bonjour,
Mon but comme l'explique assez bien le titre est de, dans un premier temps, faire un test pour savoir si le navigateur de l'internaute intègre le plugin flash correspondant à mon animation et de, dans un deuxième temps, remplacer l'animation par une photo au cas ou ce plugin ne soit pas présent (Le code pour faire le test à été récupéré sur CodeSource et marche parfaitement)
Je vais donc vous montrer ce code:
---------------------------------------------------------------------------------------------------------------------
(Partie javascript placé dans le <head>)

<SCRIPT LANGUAGE="JavaScript">
var isFlash = false;
// Pour tous navigateurs sauf IE
    if (navigator.plugins && navigator.plugins.length > 0) {
        var pluginsArrayLength = navigator.plugins.length;
        // Pour chaque plugin du navigateur...
            for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) {
                if(navigator.plugins[pluginsArrayCounter].name.indexOf("Shockwave Flash") >= 0){ // Si 1 des plugins contient Shockwave Flash
                    isFlash = true; // Alors flash player OK
                    break;
                }
            }
    }

       if(isFlash==true){
       document.getElementById("flash").style.display="block";
       document.getElementById("centre").style.display="none";
       }else{
       document.getElementById("flash").style.display="none";
       document.getElementById("centre").style.display="block";
       }
</SCRIPT>

(partie Html dans )

       <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="750" height="490" title="Animation photo"></object>
      

      
      

      

(partie CSS dans une feuilles de style externe)

#flash { position:absolute; top:101px; left:235px; height:490px; width:750px; border:0px none #000000; z-index:1; display:none;}

#centre { position:absolute; top:101px; left:235px; height:490px; width:750px; border:0px none #000000; z-index:1; background-image:url(../../Site%20Web/images/fond_corp.jpg); display:none;}

----------------------------------------------------------------------------------------------------------------------
Les propriété de position des deux div son attenantes à ma page
Grâce à firebug je suis arrivé à déterminer que le soucis venait de cette partie du code:
if(isFlash==true){

       document.getElementById("flash").style.display="block";

       document.getElementById("centre").style.display="none";

       }else{

       document.getElementById("flash").style.display="none";

       document.getElementById("centre").style.display="block";

       }

Voici l'erreur noté par firebug:

document.getElementById("flash") is null

document.getElementById("flash").style.display="block";

cependant je ne comprend pas trop j'ai utiliser les mêmes fonctions pour un menu déroulant il y a peut et cela fonctionnait à la perfection, en gros je ne comprend vraiment pas pourquoi le javascript n'arrive pas à prendre en paramètre l'id "flash" à sa fonction document.getElementById ...

Voilà si quelqu'un à une illumination ce serais vraiment sympa de la partager avec moi merci
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
3
Merci
Bonjour,

>>Partie javascript placé dans le <head>)
le html/javascript c'est de l' interprété,
c'est exécuté ligne par ligne par les navigateurs
quand document.getElementById("flash") est exécuté,
l'élément n'existe pas encore ( il est plus loin dans la source )

mettre ce script "derrière" les éléments
ou faire window.onmload=function()
                { les instructions dès que la page est chargée ; };

Cordialement [mon Site] [M'écrire] Bul

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
remarque navigator.plugins ne fonctionnera pas au moins avec IE !
j'avais commis ça ci-dessous pour tester la présence d'Acrobat Reader
à adapter donc

<html>
<head>
<title>Test si Acrobat Reader est installé</title>
<OBJECT     type="application/pdf"
            style="display:none"
            id="PDF"></OBJECT>
</head>

<script type="Text/JavaScript">
    var lib="non ";
    try         {   document.getElementById("PDF").LoadFile('');
                    lib="";
                }
    catch(e)    {   if ( navigator.plugins && navigator.plugins.length > 0 )
                    {   for ( noPlug=0; noPlug < navigator.plugins.length; noPlug++ )
                        {   if ( navigator.plugins[noPlug].name.indexOf("Adobe Acrobat") >= 0 )
                            {    lib="";
                                break;
                            }
                        }
                    }
                }
    alert("Acrobat Reader "+lib+"installé");
</script>

</html>
Commenter la réponse de Bul3
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009
0
Merci
Je n'avais même pas fais attention à l'ordre d'exécution, tu viens de m'éviter des heurs d'arrachage de cheveux et pour cela je t'en suis infiniment reconnaissant ...
Commenter la réponse de benji3rv
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009
0
Merci
Excuse moi j'ai oublier de préciser que pour IE j'avais déjà un script qui marche pas mal :

<SCRIPT LANGUAGE="VBScript">
// Test de présence du plugin flash pour Internet Explorer
On error resume next
isFlash = NOT IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))

</SCRIPT>

Si ça t'intéresse je l'ai trouvé sur CodeSource aussi ^^
Commenter la réponse de benji3rv
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
par exemple.
tu pouvais le faire en javascript....
var isFlash;
try               { isFalsh=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); }
catch(erreur) { isFlash=false;    }
Commenter la réponse de Bul3
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009
0
Merci
En fait comme ça mon script à l'air de marcher mais le problème s'est que je ne vois pas comment tester ça vu que je ne peut que désactiver le plugin sur les navigateur et pas les désinstaller ... Saurais tu comment faire pour le désinstaller ? Ou sinon faire un test pour couvrir le cas ou le plugin est bien installé mais désactivé ?
Commenter la réponse de benji3rv
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
FF : Outils / Modules Complémentaires
et désactive ceux que tu veux
y' a des boutons prévus
IE : Outils / Gérer les Modules complémentaires
clique droit sur ceux que tu veux
et désactive
@+
Commenter la réponse de Bul3