Вставьте div поверх flash в IE - PullRequest
13 голосов
/ 30 июня 2010

У меня есть строка меню, в которой есть несколько пунктов подменю.Домашняя страница содержит флэш-анимацию, которая находится под строкой меню.Когда элементы подменю находятся над файлом флэш-памяти, файл флэш-памяти будет отображаться в строке меню.Я попытался с z-index, но он не будет работать.

Эта проблема возникает только в IE.

Есть какие-нибудь советы?

Ответы [ 6 ]

25 голосов
/ 30 июня 2010

Да, Крис,

Вы должны установить атрибут для встроенного кода флэш-памяти

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

Это будет работать

6 голосов
/ 30 июня 2010

Если вы вставляете флэш-файл, вам нужно установить прозрачный режим окна:

<embed src="flashfile" wmode="transparent">
2 голосов
/ 09 апреля 2012

Есть лучшее решение для этого, так как добавление этого параметра не всегда работает, особенно если используется объект flash внутри div.

В конце страницы зарегистрируйте флэш-объект так:

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

Затем вызовите функцию JavaScript следующим образом:

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

Эта функция выполняет следующие действия:

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

И это работает на всех браузерах 100%


Вы также можете использовать:

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

Теперь, если вы вызываете действия над тегом div, например:

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

или document.getElementById ('MyDiv'). style.visibility = 'none';

Что вам нужно сделать, это сначала выполнить действие div, а затем вызвать flash flash в следующем порядке:

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

Наслаждайтесь!

2 голосов
/ 30 июня 2010

Muneer и Тим уже дали хороший ответ, но я хотел бы добавить дополнительную информацию:

  • На веб-сайте Adobe есть документация о атрибутах тегов Flash OBJECT и EMBED *Значения 1006 *
  • transparent и opaque вызовут проблему доступности, поскольку они скрывают содержимое вашего флэш-объекта для программ чтения с экрана.Только значение по умолчанию window подходит для программ чтения с экрана
  • z-index не будет и ничего не может сделать в вашем случае: объект управляется плагином, флеш-плеером или альтернативой,и это происходит за пределами страницы, отображаемой браузером.Он по-прежнему взаимодействует с ним (ширина, высота, JS), но что касается рендеринга ...
  • Существует аналогичная проблема с элементами select в IE6 (и 7?), Где нет значения z-index для позиционированного элементаотобразит последний поверх select (это ошибка из-за того, что IE рассматривает элементы select)
  • вам следует протестировать на OS X и Linux, с этими флешками довольно много проблем.
1 голос
/ 25 апреля 2013

Мне наконец-то удалось найти решение, которое бы работало на всех браузерах.

Если бы я использовал

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

, я бы получил желаемый вывод в IE, но не в Firefox, и если бы я использовал

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

, я получил желаемый результат в Firefox, но не т.е.

Поэтому я решил использовать оба, которые работают на всех браузерах

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

 <embed wmode="transparent" ></embed>
1 голос
/ 25 июля 2012

Используйте эти значения вместо «прозрачный»:

wmode="opaque"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...