A exibição de conteúdo sobre um flash 9 swf?
Pergunta
Eu tenho um swf que requer Flash 9, e eu estou tentando mostrar conteúdo sobre ele. Para facilitar isso, eu configurei wmode para transparente. O problema é que isso só funciona quando o usuário tem Flash 10 instalado, e eu realmente não quero requerem Flash 10 para ver o conteúdo no site que estou trabalhando. Quando eu puxe uma div sobre o conteúdo de flash com flash 9, o swf sangra para dentro ou completamente substitui o div.
Como posso evitar isso sem fazer flash de 10 um requisito usuário?
Eu estou usando swfobject para incorporar o swf e jQuery-ui para divs exibição sobre o conteúdo Flash.
EDIT:
Este comportamento falha só é observado no Safari.
Solução
Eu não tenho certeza se isso vai ajudá-lo per se. Mas eu usei seguinte método para mostrar o conteúdo ao longo de flash.
Eu tinha enfrentado esse problema há algum tempo. Eu era mostrar usuário um pop-up para Termos e Condições para inscrição em um site. Popup estava vindo bem, mas não havia um filme flash no topo da página que foi HIDDING parte superior da caixa de diálogo. O método testado e amplamente utilizado é colocar um iframe no lugar onde você quer mostrar o seu conteúdo e posição absoluta o seu conteúdo e IFrame. Por exemplo, se você quiser mostrar uma div acima de um filme flash, em seguida, coloque um iframe como segue:
<iframe style="position:absolute;top:250;left:150;"></iframe>
Em seguida, posicione o div exatamente acima deste iframe como:
<div style="position:absolute;top:250;left:150;"></div>
Eu estava usando jquery na página para mostrar diálogo usando o plugin ui.dialog. Depois de brincadeiras em algum momento eu criei seguinte solução simples.
1) put atributo id no elemento filme para identificar exclusivamente o objeto de filme. Como,
<object id="movie1"></object>
2) antes de mostrar a janela (ou outro conteúdo para que o assunto) chamar uma função javascript para esconder o filme. Como,
$("#movie1").css("display","none");
3) mostram agora diálogo. Como,
$("#dialog").dialog("open");
4) depois de fechar a caixa de diálogo, mostrar o filme novamente. Como,
$("#dialog").dialog("close");
$("#movie1").css("display","inline");
Outras dicas
wmode transparente tem sido parte do Flash durante anos e não é restrito para o Flash Player 10.
Independentemente disso, você não precisa usar wmode transparente; a menos que você realmente precisa de transparência em seu SWF, você deve usar wmode opaco em vez. é menos buggy e usos menos poder de processamento.
o truque é também garantir que seus elementos HTML têm uma 'posição' indicado no CSS.
tente seguir os exemplos e as instruções aqui: http://learnswfobject.com/advanced-topics / colocação em HTML-elementos-over-a-flash-movie /
Eu não posso oferecer conselhos que poderiam resolver o problema, então eu vou sugerir que você pode querer evitar o problema, em vez disso.
Ao invés de ter o (x) html conteúdo sobre o conteúdo flash no índice z
+------------+
| |
| +-------------+
| | html |
| | |
| +-------------+
| Flash |
+------------+
Como sobre em vez de colocar o (x) html conteúdo acima o Flash na janela:
+------------+
| html |
| |
+------------+
+------------+
| |
| Flash |
| |
| |
| |
| |
+------------+
Não é o ideal, mas pelo menos oferece uma solução viável até Flash / HTML pode co-existir com mais sucesso.
Eu encontrei este em meus favoritos (e eles são da era pré-10). Embora eu não tenho nenhum Flash Player 9 / Safari aqui para validar isso agora. Dê-lhe um tiro.
Diferentes wmodes para navegadores
Como pipwerks disse, WMode deve controlar isso, mas nem todas as plataformas / navegadores lidar com eles corretamente. Nesse caso, eu consideraria que isso seja culpa do Safari / Flash9 e não solucionáveis.
tente definir o parâmetro wmode a opaco. Isso parece resolver um monte de problemas de camada / profundidade HTML quando o Flash está envolvido.