IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Communication Javascript -> Flash


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Communication Javascript -> Flash
    Bonjour tout le monde!
    Voici donc ma situation :

    J'ai un site, avec un header en flash, dans lequel j'ai un menu. En cliquant sur les entrées du menu, je charge une page dynamiquement dans un div de ma page, grâce à un script nommé "prototype.js" et un fichier fonction qui se présente ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function fct_contenu(ident){ 
     
     
     
       switch  (ident){ 
     
     
     
    	   case 1: 
     
    	   new Ajax.Updater('bloc_dyn','./inc/auberge.html',{method: 'get'}); 
     
    	   break;


    Ainsi de suite pour chaque entrée du menu. Pour cette partie là, tout marche correctement.

    Seulement, j'ai un deuxième menu, qui cette fois se situe ds un div. C'est un menu html classique. Ce que j'aimerai, c'est pouvoir agir de la même manière qu'avec mon header flash. Pour charger la page, j'y arrive, je modifie simplement le nom de la page en fonction de mon 'case'.

    Ce que je voudrais ds le même tps c'est agir sur le header flash, pour y faire apparait une image (oui, ds le header, en plus du menu, j'ai un petit slideshow).

    Mes recherches m'ont toute tourné vers une solution de ce genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    case 8:
     
    	   new Ajax.Updater('bloc_dyn','./inc/activites.php',{method: 'get'})
     
    	   //var headerswf = window.document.header;
     
    	   //alert(headerswf);
     
    		var myswf = eval(window.document.header)
     
    	   	alert(myswf)
     
    	   	myswf.GotoFrame(20);
     
    	   break;


    Je dois pouvoir pointer mon objet swf, soit à l'aide de la balise <object> soit avec la balise <embed> dans lesquelles j'ai bien pensé à attribuer un 'id' et un 'name'. L'objet devrait être stocké ds ma variable 'myswf'. Seulement lorsque je test ma page, celle ci se charge bien ds mon div, comme je le voudrais, mais cela n'a aucun impact sur mon swf, et j'ai comme 'alert' : undefined. Donc ma variable est null, donc je n'ai pas pointé mon swf!!

    Si quelqu'un d'éclairer pouvait me prêter sa torche se serait pas de refus!

    Merci d'avance!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il faut rajouter un paramètre.
    Pour la balise object, rajoute :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <param name="allowScriptAccess" value="sameDomain" />
    et pour la balise embed, rajoute un attribut :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <embed ... allowScriptAccess="sameDomain" />

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses.

    Les paramètres 'allowScriptAccess' sont bien présents dans les balises <object> et <embed>

    SpaceFrog : J'ai suivi ton lien. J'ai tout essayé, mais je n'ai pas avancé d'un poil!
    J'ai vraiment l'impression que je n'arrive pas à pointer mon swf correctement! Je vous présente donc mon bout de code HTML concerné, peut être pourrez vous m'en dire plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <body>
     
    <div id="main">
    	<div id="blocheader">
    	  <script type="text/javascript">
    AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','706','height','343','title','header','src',
    '../flash/header','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','wmode','transparent','movie','../flash/header' ); //end AC code
    </script>
     
    <noscript>
    	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="706" height="343" id="myswf" align="middle">
    	<param name="allowScriptAccess" value="sameDomain" />
    	<param name="allowFullScreen" value="false" />
    	<param name="movie" value="../flash/header.swf" />
        <param name="quality" value="high" />
        <param name="wmode" value="transparent" />
        <param name="bgcolor" value="#ffffff" />
        <embed 	src="../flash/header.swf" 
        		quality="high" 
                wmode="transparent" 
                bgcolor="#ffffff" 
                width="706" 
                height="343" 
                name="myswf"  
                align="middle" 
                allowScriptAccess="sameDomain" 
                allowFullScreen="false" 
                type="application/x-shockwave-flash" 
                pluginspage="http://www.macromedia.com/go/getflashplayer" 
                swLiveConnect="true" />
    	</object>  
    </noscript>
     
        </div> 
        ......
        </div>
    et la commande JavaScript qui va avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    new Ajax.Updater('bloc_dyn','./inc/activites.php',{method: 'get'})
    	   window.document.getElementById('main').embed(myswf).GotoFrame(20);
    //headerswf = window.document.main.myswf
    //headerswf = window.document.getElementById('main').myswf
    //alert(window.document.getElementById('main').myswf
    //headerswf.GotoFrame(20);
    La premiere ligne charge ma page, pas de problème. Le reste, c'est la derniere tentative que j'ai fait, au point ou j'en etais....

    comme ceci, j'ai un msg d'erreur ds firebug : 'myswf is not defined'. Si je passe par une varible (headerswf) pareil, ou alors un msg d'erreur me disant que getElementById n'est pas une fonction...

    je lache pas l'affaire!!!!

    Merci pour votre aide

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Le problème est que tu essayes d'accéder à ton Flash avant que la requête n'ai abouti... en plus, ta méthode pour y accéder est mauvaise...
    Et au passage, si tu utilises Prototype, il est préférable d'utiliser
    que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.document.getElementById('main')


    Pour ton code, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    new Ajax.Updater('bloc_dyn','./inc/activites.php',{method: 'get', onSuccess:function(){
        window.myswf.GotoFrame(20);
    }})

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci de m'accorder un peu de ton temps

    J'ai mis de coté le chargement de ma page, qui fonctionne.

    Je reste toujours bloqué sur le pointage du swf...

    J'ai essayé de pointer d'abord le div qui contient mon swf. pour se faire, j'ai suivi ta solution, et j'ai remplacé la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    case 8:
    var headerswf = $('blocheader')
    alert(headerswf);
    Au test de la page : [object HTMLDivElement]

    Donc j'en conclue que c'est bon, il pointe correctement mon div.

    maintenant, toujours en suivant ton conseil, il faut que je pointe mon swf, grâce aux balises id et/ou name de mes balises <object> et/ou <embed> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var headerswf = $('blocheader').myswf
    alert(headerswf);
    Au test de la page : 'undefined'

    Si je test ta solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    new Ajax.Updater('bloc_dyn','./inc/activites.php',{method: 'get', onSuccess:function(){
    window.myswf.GotoFrame(20);
    }})
    Pareil, j'ai un retour 'undefined'

    Le fait que mon swf ne se trouve pas au même niveau que mes pages peut il être une des causes?

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var headerswf = window.myswf;
    alert(headerswf);

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Pareil, 'undefined'

    Idem si je mets le code dans mon page index.

    maj : Si dans ma page index je mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var headerswf = $('blocheader');
    alert(headerswf);
    </script>
    J'ai 'null'

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    A force de perseverance, on finit par s'en sortir!

    Alors:

    J'ai tout d'abord repris les paramètres de la fonction AC_FL_RunContent(), qui me paraissaient suspect. J'ai comparé avec la page HTML généré par flash lors de la publication, et j'ai rajouté un param id...
    Bref, mes tentatives de pointage vers mon swf ne fonctionnant toujours pas, j'ai entrepris de tout faire passer par ma page index.

    Voici ce que j'ai rajouté aprés la fonction JavaScript AC_FL_RunContent():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    function getMySwf(entries){
    var headerswf = document.myswf
    switch (entries){
     
    	case 8:
    		headerswf.GotoFrame(21);
    		headerswf.Play();
    	break;
     
    	case 9:
    		headerswf.GotoFrame(21);
    		headerswf.Play();
    	break;
     
    	case 10:
    		headerswf.GotoFrame(21);
    		headerswf.Play();
    	break;
     
    	case 11:
    		headerswf.GotoFrame(21);
    		headerswf.Play();
    	break;
    }
    J'ai gardé les mêmes 'case' qui sont utilisés par prototype, ca me paraissait plus cohérent. Et dans chacun de mes liens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:fct_contenu(8);javascript:getMySwf(8)
    La première fonction 'fct_contenu(8)' qui s'occupe de chargé la page via prototype. getMySwf(8) qui s'occuper de controler les SWF.

    CONTENT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication Javascript/Flash et IE
    Par Fredovsky dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 11/06/2008, 16h34
  2. Réponses: 3
    Dernier message: 15/11/2005, 10h07
  3. Communication Javascript vers Flash
    Par wwave dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/11/2005, 10h00
  4. [FLASH MX 2004] Communication javascript--flash
    Par meslaey dans le forum Flash
    Réponses: 4
    Dernier message: 28/06/2004, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo