1 октября 2009 г.

Как сделать, чтобы Flash-ролик не перекрывал другие элементы веб-страницы

Делая кое-какое задание на работе, столкнулся с проблемой – флеш-ролик, помещенный на страницу, начал перекрывать всплывающее меню (которое выводится с помощью блоков <div>, css и JavaSript. Выглядит паскудно – так что поискал, нашел и решил.

Но поскольку это – на работе, то вроде и показать нету как. Так что сделал и забыл.

Однако, как говорится «свежо предание». Захожу (опять же, по работе) на русский сайт компании Wacom – и на тебе, та же ерунда! :)

На этом сайте, на главной, стоит внедренное видео с YouTube. А оно, как известно, сделано на Flash.

И закрывает собой всплывающее меню.

Выглядит это безобразие вот так:

А решается очень просто.

В Flash IDE (Macromedia Flash, или Adobe Flash – какая у Вас там версия…), в окне настройки параметров публикации (Publish Settings, вызывается по Ctrl-Shift-F12), на вкладке HTML надо установить для параметра Windows Mode значение Opaque Windowsless (по умолчанию там стоит Window).

Вот так вот:

 

При публикации – уже с учетом данной установки – в html-файле, в теге <embed> появляется новый параметр  – wmode="opaque"

А в теге <object><param name="wmode" value="opaque" />

Так что можно и не делать повторную публикацию клипа, а просто вставить нужный параметр – в тег <embed>, или <object> (или в оба – что вы там используете; а если вы встраиваете Flash через JavaSript, то разработчики скрипта, по идее, должны были тоже предусмотреть смену данного параметра).

После того, как данный параметр вставлен, браузер начинает отображать все так, как и ожидалось с самого начала – никакие блоки <div> под Flash уже не прячутся.