OVH Cloud OVH Cloud

[Flash MX] javascript, getVariable & browsers....

2 réponses
Avatar
Ned
Salut à tous,

je bute sur un truc assez frustrant, d'autant que ça me semble être la
dernière touche à apporter pour terminer mon projet ...
J'ai des pages HTML dans lesquelles j'instancie un ou plusieurs swf, en
passant par une petite fonction JS (histoire entre autres d'alléger le code
HTML des pages) :

InsereFlash (fichier,hauteur,largeur)

cette fonction se charge de définir une id unique à mon objet ("swf" + un
nombre incrémental) , qu'elle empile ensuite dans un tableau :

id = CreeIdUnique();
monTab.push(id);
document.write ('<object ......blabla......id="' + id + '">);
document.write ('<param........>');
...
document.write ('embed.....blabla.......name="' + id +
'></embed></object>");

les SWF s'affichent bien, comme il faut, les id sont bel & bien uniques
quand je demande à voir le contenu de mon tableau d'id, donc tout va bien
(jusque là)
alert ("tab=" + monTab.join(","));
=>swf0,swf1,swf2

maintenant j'aimerais pouvoir interroger une variable dans chacun de mes
swf, en une boucle, depuis une autre fonction,

function testEtat()
{
var leSWF;
var etat = true;

for (var i=0;i<monTab.length; i++)
{
leSWF = eval("document." + monTab[i]);
etat = etat && leSWF.GetVariable("_root.etat");
}

return etat;
}

or là pas moyen : IE me signale une erreur "non spécifiée" (mouarf) et Moz'
comme quoi "leSWF.GetVariable is not a function"
Bien sûr, si au lieu de passer par ma var "leSWF" je tape en dur l'adressage
à un des mes SWF, ça marche :
etat = etat && document.swf0.GetVariable("_root.etat");

j'ai essayé aussi de passer par GetElementByID, ça n'a rien changé :

etat = etat &&
document.getElementById(monTab[i]).GetVariable("_root.etat");

même motif, même punition :o(

Donc si une âme généreuse connaissait l'astuce pour pouvoir s'adresser
dynamiquement à des swf depuis du js et daignerait la partager, je lui en
serai très, mais alors très-très-beaucoup reconnaissant :o)
--
------------------
Ned
----------------------------------------
Bien faire et laisser braire
----------------------------------------
...mais après avoir lu & compris
ceci : http://faqmm.free.fr

2 réponses

Avatar
Didier Broch
Salut,

as-tu essayé ceci

for (var i=0;i<monTab.length; i++)
{
leSWF = document.getElementById( monTab[i]);
etat = etat && leSWF.GetVariable("_root.etat");
}

Didier

"Ned" a écrit dans le message de news:
ctvc19$bb6$
Salut à tous,

je bute sur un truc assez frustrant, d'autant que ça me semble être la
dernière touche à apporter pour terminer mon projet ...
J'ai des pages HTML dans lesquelles j'instancie un ou plusieurs swf, en
passant par une petite fonction JS (histoire entre autres d'alléger le


code
HTML des pages) :

InsereFlash (fichier,hauteur,largeur)

cette fonction se charge de définir une id unique à mon objet ("swf" + un
nombre incrémental) , qu'elle empile ensuite dans un tableau :

id = CreeIdUnique();
monTab.push(id);
document.write ('<object ......blabla......id="' + id + '">);
document.write ('<param........>');
...
document.write ('embed.....blabla.......name="' + id +
'></embed></object>");

les SWF s'affichent bien, comme il faut, les id sont bel & bien uniques
quand je demande à voir le contenu de mon tableau d'id, donc tout va bien
(jusque là)
alert ("tab=" + monTab.join(","));
=>swf0,swf1,swf2

maintenant j'aimerais pouvoir interroger une variable dans chacun de mes
swf, en une boucle, depuis une autre fonction,

function testEtat()
{
var leSWF;
var etat = true;

for (var i=0;i<monTab.length; i++)
{
leSWF = eval("document." + monTab[i]);
etat = etat && leSWF.GetVariable("_root.etat");
}

return etat;
}

or là pas moyen : IE me signale une erreur "non spécifiée" (mouarf) et


Moz'
comme quoi "leSWF.GetVariable is not a function"
Bien sûr, si au lieu de passer par ma var "leSWF" je tape en dur


l'adressage
à un des mes SWF, ça marche :
etat = etat && document.swf0.GetVariable("_root.etat");

j'ai essayé aussi de passer par GetElementByID, ça n'a rien changé :

etat = etat &&
document.getElementById(monTab[i]).GetVariable("_root.etat");

même motif, même punition :o(

Donc si une âme généreuse connaissait l'astuce pour pouvoir s'adresser
dynamiquement à des swf depuis du js et daignerait la partager, je lui en
serai très, mais alors très-très-beaucoup reconnaissant :o)
--
------------------
Ned
----------------------------------------
Bien faire et laisser braire
----------------------------------------
...mais après avoir lu & compris
ceci : http://faqmm.free.fr




Avatar
Ned
Didier Broch a tapotylographié :

| Salut,
|
| as-tu essayé ceci
|
| for (var i=0;i<monTab.length; i++)
| {
| leSWF = document.getElementById( monTab[i]);
| etat = etat && leSWF.GetVariable("_root.etat");
| }
|
| Didier
|


merci pour la suggestion :o)
En fin de compte, juste après avoir posté j'ai multiplié les tests, et
maintenant ça fonctionne avec pour IE :

leSWF = document.getElementById(monTab[i]);

et pour Moz'/Fox :

leSWF = eval("document." + monTab[i]);

Mais l'univers du dev' online étant plein de surprise, maintenant les swf ne
s'affichent plus correctement tant qu'il ne sont pas dans la zone visible de
la fenêtre sous Moz'/Fox
:o(
Or mon but est d'imprimer la page, mais pas organisée telle qu'à l'écran.
Donc je la charge dans une frame à z-index inférieur à celle qui est
affichée.....

Merci quand même !
--
------------------
Ned
----------------------------------------
Bien faire et laisser braire
----------------------------------------