Flash и валидация HTML-страницы
Соответствие HTML-кода страниц сайта стандартам организации W3C гарантирует правильное отображение сайта во всех интернет-обозревателях, поддерживающих эти стандарты, и является свидетельством профессионального подхода при разработке интернет-сайтов. Кроме того, «правильный» HTML-код в лучшей степени соответствует принципу разделения информационного наполнения страницы (контента) от ее представления (имеются ввиду последние строгие стандарты XHTML 1.0 Strict или XHTML 1.0 Transitional). К сожалению, многие разработчики интернет-сайтов (даже достаточно известные) попросту игнорируют любые стандарты, в лучшем случае ограничиваясь указанием стандарта в начале HTML-страницы... стандарта, которого впоследствии сами же не придерживаются. Впрочем, речь пойдет не об этом...
Как известно, при публикации flash-роликов в среде Macromedia Flash (здесь и далее рассматривается Macromedia Flash 2004 MX) создается HTML-файл с примером внедрения публикуемого ролика:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
...
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/ shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="example" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="example.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="example.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="example" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
...
Из заголовка страницы видно, что Macromedia Flash предлагает использовать стандарт XHTML 1.0 Transitional. Вместе с этим, разработчики Flash видимо забыли, что в DTD данного стандарта тэг embed отсутствует. Таким образом, вышеприведенный код никогда не пройдет тест на соответствие стандарту W3C.
Попробуем исправить ситуацию, удалив полностью тэг embed:
...
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/ shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="example" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="example.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
</object>
...
Документ успешно проходит тест на соответствие стандарту, но... flash-анимация перестала отображаться в таких браузерах, как Mozilla Firefox и Opera, поскольку именно они работали с тэгом embed. Впрочем, последние версии названных браузеров вполне могут работать и с тэгом object. Необходимо лишь изменить атрибуты данного тэга:
...
<object type="application/x-shockwave-flash" data="example.swf" width="550" height="400" id="example" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="example.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
</object>
...
Приведенный выше код прекрасно работает, как в Microsoft Internet Explorer, так и в браузерах Mozilla Firefox, Opera. Кроме того, он стал более понятным и изящным, ну и, самое главное, он вполне соответствует стандартам XHTML 1.0 Transitional и XHTML 1.0 Strict.
Взято с http://www.controlstyle.ru/