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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top