2010-06-30 13 views
13

Mam pasek menu, który ma kilka pozycji podmenu. Strona główna zawiera animację flash, która znajduje się pod paskiem menu. Gdy elementy podmenu znajdują się nad plikiem flash, plik flash zostanie wyświetlony na pasku menu. Próbowałem z z-index, ale to nie zadziała.Wstaw div na flash w IE

Ten problem występuje tylko w IE.

Jakieś wskazówki?

Dzięki

Odpowiedz

25

Tak Chris,

Musisz ustawić atrybut migać osadzić kod

<param name="wmode" value="transparent" /> 

To będzie działać

+0

Mam ten sam problem z IE-11 i nie zadziałało ... żaden pomysł? –

6

Gdzie wstawić plik flash, należy ustawić tryb okna na przezroczyste:

<embed src="flashfile" wmode="transparent"> 
+0

ja nie wiedziałem, że to takie proste. Szukałem w sieci i byli ludzie, którzy twierdzili, że nie było to możliwe, więc spróbowałem szczęścia na stackoverflow i była odpowiedź! Wielkie dzięki – seedg

2

Muneer i Tim już dał dobrą odpowiedź, ale chciałbym dodać kilka dodatkowych infos:

  • stronie Adobe posiada dokumentację o Flash OBJECT and EMBED tag attributes
  • transparent i opaque wartości spowoduje problem dostępności, Powodują ukryj zawartość swojego obiektu flash do czytników ekranu. Tylko domyślna wartość window jest OK dla czytników ekranu
  • z-index nie będzie i nie może nic zrobić w twoim przypadku: obiekt jest zarządzany przez wtyczkę, Flash Player lub alternatywę, i robi to całkiem poza stroną renderowaną przez przeglądarkę. Nadal współdziała z nią (szerokość, wysokość, JS), ale jak dla renderowania ...
  • Istnieje podobny problem z wybranymi elementami w IE6 (i 7?), Gdzie żadna wartość z-index na pozycjonowanym elemencie nie spowoduje wyświetlenia drugi nad wybranym (ten jest błędem ze względu na sposób, w jaki IE bierze pod uwagę wybrane elementy)
  • powinieneś przetestować na OS X i Linux, jest sporo problemów z flash na tych systemach.
2

Istnieje lepsze rozwiązanie tego problemu, ponieważ dodanie tego parametru nie zawsze działa, szczególnie w przypadku użycia obiektu flash w elemencie div.

Na końcu strony zarejestrować obiekt błyskowej tak:

<script type="text/javascript"> 
    swfobject.registerObject('FlashIdName'); 
</script> 

Następnie wywołać funkcji javascript tak:

<script type="text/javascript"> 
    swfobject.registerObject('FlashIdName'); 
    Chk_Flash('FlashIdName'); 
</script> 

Funkcja ta wykonuje następujące operacje:

<script type="text/javascript"> 
function Chk_Flash(ToRegister) 
{ 
    document.getElementById('FlashIdName').style.visibility = 'visible'; 
    return true; 
} 
</script> 

Działa to we wszystkich przeglądarkach 100%


Można również użyć:

document.getElementById('FlashIdName').style.visibility = 'hidden'; 

Teraz jeśli dzwonisz działań na znaczniku div, takich jak na przykład:.

document.getElementById('MyDiv').style.visibility = 'block'; 

lub document.getElementById ('myDiv') styl .visibility = "none";

Co trzeba zrobić, to najpierw zrobić akcję div następnie wywołać visibilty błysku w tej kolejności:

document.getElementById('MyDiv').style.display = 'block'; 
document.getElementById('FlashIdName').style.visibility = 'visible'; 

Enjoy!

1

używać tych wartości zamiast „przezroczysty”:

wmode="opaque" 
1

I w końcu udało się znaleźć rozwiązanie, które będzie działać na obu wszystkich Browers.

Jeżeli użyłem

<param name="wmode" value="transparent" /> 

, chciałbym uzyskać pożądany wynik na IE, ale nie w firefox i jeśli użyłem

<embed wmode="transparent" ></embed> 

, mam pożądany wynik w Firefox, ale nie znaczy.

Więc postanowiłem wykorzystać zarówno która działa na wszystkich przeglądarkach

<!--[if IE]> 
    <param name="wmode" value="transparent" /> 
<![endif]--> 

<embed wmode="transparent" ></embed>