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

Signaler
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
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

7 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
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>
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009

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 ...
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009

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 ^^
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
par exemple.
tu pouvais le faire en javascript....
var isFlash;
try               { isFalsh=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); }
catch(erreur) { isFlash=false;    }
Messages postés
5
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2009

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é ?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
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
@+