Вставить div поверх вспышки в IE

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

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

Любые советы?

Спасибо

Ответы

Ответ 1

Да, Крис,

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

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

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

Ответ 2

Если вы вставляете флеш файл, вам необходимо настроить прозрачность окна:

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

Ответ 3

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

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

Ответ 4

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

В конце страницы зарегистрируйте flash-объект следующим образом:

<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, а затем вызвать флэш-видимость в этом порядке:

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

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

Ответ 5

Используйте это значение вместо 'transparent':

wmode="opaque"

Ответ 6

Наконец-то я смог найти решение, которое будет работать на обоих броузерах.

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

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

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

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

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

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

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

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