2009-07-30 5 views
2

J'ai un swf qui nécessite flash 9, et j'essaie d'afficher le contenu par-dessus. Pour faciliter cela, j'ai défini wmode sur transparent. Le problème est, cela fonctionne UNIQUEMENT lorsque l'utilisateur a installé flash 10, et je ne veux vraiment pas exiger flash 10 pour voir le contenu sur le site sur lequel je travaille. Quand je décroche un div sur le contenu flash avec flash 9, le swf saigne dans ou écrase complètement le div.Affichage du contenu à un swf 9 swf?

Comment puis-je éviter cela sans que le flash 10 soit une exigence de l'utilisateur? J'utilise swfobject pour intégrer le swf et jquery-ui pour afficher les divs sur le contenu flash.

EDIT:

Ce comportement d'échec est seulement noté dans Safari.

Répondre

2

Je ne suis pas sûr si cela vous aidera en soi. Mais j'ai utilisé la méthode suivante pour afficher le contenu sur Flash.

J'avais fait face à ce problème il y a quelque temps. Je devais montrer à l'utilisateur un popup pour les Termes et Conditions pour l'inscription sur un site. Popup arrivait bien, mais il y avait un film flash en haut de la page qui était en train de cacher la partie supérieure de la boîte de dialogue. La méthode testée et largement utilisée est de mettre un Iframe à l'endroit où vous voulez montrer votre contenu et positionner votre contenu et IFrame.Par exemple, si vous voulez afficher un div ci-dessus un film flash, puis placez un IFrame comme suit:

<iframe style="position:absolute;top:250;left:150;"></iframe> 

Placez ensuite la div exactement au-dessus de cette iframe comme:

<div style="position:absolute;top:250;left:150;"></div> 

j'utilisais jquery sur la page pour afficher la boîte de dialogue en utilisant le plugin ui.dialog. Après avoir trompé un jour, j'ai conçu une solution simple.

1) mettre l'attribut id sur l'élément de film pour identifier de manière unique l'objet de film. Like,

<object id="movie1"></object> 

2) avant d'afficher la boîte de dialogue (ou tout autre contenu), appelez une fonction javascript pour masquer l'animation. Comme,

$("#movie1").css("display","none"); 

3) afficher maintenant le dialogue. Like,

$("#dialog").dialog("open"); 

4) après avoir fermé la boîte de dialogue, affichez à nouveau le film. Comme,

$("#dialog").dialog("close"); 
    $("#movie1").css("display","inline"); 
3

wmode transparent a fait partie de Flash pendant des années et ne se limite pas à Flash Player 10.

peu importe, vous n'avez pas besoin d'utiliser wmode transparent; À moins que vous ayez vraiment besoin de transparence dans votre fichier SWF, vous devriez plutôt utiliser wmode opaque. c'est moins buggé et utilise moins de puissance de traitement. L'astuce consiste également à s'assurer que vos éléments HTML ont une «position» indiquée dans le CSS.

essayer de suivre les exemples et les instructions ici: http://learnswfobject.com/advanced-topics/placing-html-elements-over-a-flash-movie/

-1

Je trouve cela dans mes favoris (et ils sont de l'époque pré-10). Bien que je n'ai pas Flash Player 9/Safari ici pour valider cela maintenant. Donner un coup de feu.

Different WModes for Browsers

Comme pipwerks dit, WMode devrait contrôler, mais pas toutes les plates-formes/navigateurs les gérer correctement. Dans ce cas, je considère que c'est la faute de Safari/Flash9 et non réparable.

-1

Essayez de définir le paramètre wmode sur opaque. Cela semble résoudre beaucoup de problèmes de couche/profondeur HTML lorsque Flash est impliqué.

1

Je ne peux pas offrir des conseils qui pourraient résoudre le problème, donc je suggère que vous pourriez vouloir éviter le problème, à la place.

Plutôt que d'avoir le (x) contenu HTML sur le contenu flash dans le z-index

+------------+ 
|   | 
| +-------------+ 
| | html  | 
| |    | 
| +-------------+ 
| Flash | 
+------------+ 

Que diriez-vous à la place de placer le (x) contenu html au-dessus du Flash dans la fenêtre:

+------------+ 
| html  | 
|   | 
+------------+ 
+------------+ 
|   | 
| Flash  | 
|   | 
|   | 
|   | 
|   | 
+------------+ 

Ce n'est pas idéal, mais il offre au moins une solution viable jusqu'à ce que Flash/html puisse coexister plus efficacement.

+0

Ceci n'est pas possible dans ce cas particulier. Le flash est assez haut sur la page, et je tire des composants jquery-ui. Je serais sur une solution de contournement si c'était possible. –

+0

Félicitations pour le diagramme d'Ascii. –

+0

Votre situation me fait peur, car je ne pense pas qu'il existe une alternative particulièrement fonctionnelle, malheureusement. Mais ici, j'espère! Et oui, qui n'aime pas ascii =) –