Решение с использованием javascript библиотеки SWFObject v2.1
Code
<script type="text/javascript" src="http://yandex.st/swfobject/2.2/swfobject.min.js"></script> <script type="text/javascript"> if (swfobject.hasFlashPlayerVersion("6.0.0")) {<!-- указываем версию flash, на которой сделан ролик --> var fn=function() { var att={ data:"/_example/swf/test.swf", width:"200", height:"300" };<!-- указываем путь и имя flash-объекта, а так же его размеры --> var par={ menu:"true", <!-- для пользователя даем возможность управлять анимацией --> quality:"high", <!-- высокое качество --> wmode:"opaque" <!-- чтобы можно было перекрыть flash --> }; var id="replaceMe";<!-- id блока, куда будет вставлен flash --> var myObject = swfobject.createSWF(att, par, id); }; swfobject.addDomLoadEvent(fn); }; </script>
Блок, в который будет вставлен flash, имеет альтернативный контент — это будет отображено при не установленном flash, либо при устаревшей версии. Для примера выведем альтернативную картинку и ссылку для установки свежей версии flash:
Code
<div id="replaceMe"> <img src="/_example/swf/test.gif" width="200" height="300" alt="Текст для поисковых роботов" /> <a href="http://www.macromedia.com/go/getflashplayer" target="_blank" title="Перейти на сайт adobe для установки свежей версии flash">Установить свежую версию Flash</a> </div>
Для вставки нескольких flash-объектов используем необходимое количество контейнеров и вызовов функции вставки:
Code
<script type="text/javascript" src="http://yandex.st/swfobject/2.2/swfobject.min.js"></script> <script type="text/javascript"> if (swfobject.hasFlashPlayerVersion("6.0.0")){<!-- указываем версию flash, на которой сделан первый объект --> var fn=function(){ var att={data:"/_example/swf/test.swf",width:"200",height:"300"}; var par={menu:"true",quality:"high",wmode:"opaque"}; var id="replaceMe";<!-- id блока, куда будет вставлен первый flash --> var myObject=swfobject.createSWF(att, par, id); }; swfobject.addDomLoadEvent(fn); }; if (swfobject.hasFlashPlayerVersion("9.0.1")){<!-- версия flash второго объекта --> var fn=function() { var att={ data:"/_example/swf/test2.swf", width:"200", height:"400" }; <!-- второй объект --> var par={menu:"true",quality:"high",wmode:"opaque"}; var id="replaceMe2"; <!-- блок для второго объекта --> var myObject=swfobject.createSWF(att, par, id); }; swfobject.addDomLoadEvent(fn); }; </script>
Html
Code
<div id="replaceMe"> <img src="/_example/swf/test.gif" width="200" height="300" alt="Текст для поисковых роботов" /> <a href="http://www.macromedia.com/go/getflashplayer" target="_blank" title="Перейти на сайт adobe для установки свежей версии flash">Установить свежую версию Flash</a> </div> <div id="replaceMe2"> <img src="/_example/swf/test.gif" width="200" height="300" alt="Текст для поисковых роботов" /> <a href="http://www.macromedia.com/go/getflashplayer" target="_blank" title="Перейти на сайт adobe для установки свежей версии flash">Установить свежую версию Flash</a> </div>
недостаток метода — у пользователей у которых установлен flash, но отключен javascript, увидят только альтернативное содержимое
использование параметра wmode может привести к некотрым ошибкам работы flash (например, при wmode="transparent" нельзя ввести кириллические символы в поля ввода), используйте его только когда это действительно необходимо + хорошо потом тестируйте функциональность flash-объекта
в предыдущей версии метода использовалось значение transparent параметра wmode, от него пришлось отказаться, т.к. обработка прозрачности ведет к снижению производительности браузера
Вставка flash в HTML с использованием javascript библиотеки SWFObject v2.2
Почти тоже, что и в варианте выше, подключаем библиотеку, скачать которую можно на странице проекта SWFObject в Google Code или Хостинг JavaScript-библиотек от Яндекса. Как и в предыдущем варианте, создаем HTML контейнер для flash с альтернативным содержимым:
Code
<div id="replaceMe"> <img src="/_example/swf/test.gif" width="200" height="300" alt="Текст для поисковых роботов" /> <a href="http://www.macromedia.com/go/getflashplayer" target="_blank" title="Перейти на сайт adobe для установки свежей версии flash">Установить свежую версию Flash</a> </div>
При динамической вставке пишем скрипт, который вызывает функцию swfobject.embedSWF и передает ей параметры вставки flash-объекта. Это может выглядеть, например, так (демонстрационный пример взят из официальной документации):
Code
<script type="text/javascript"> var flashvars={}; flashvars.name1="hello"; flashvars.name2="world"; flashvars.name3="foobar"; var params={}; params.menu="false"; var attributes={}; attributes.id="myDynamicContent"; attributes.name="myDynamicContent"; swfobject.embedSWF("/_example/swf/314.swf","replaceMe","600","400","9.0.0","/_theme/_swf/_js/expressInstall.swf",flashvars,params,attributes); </script>
Так как скрипт будет вставлять на страницу конструкцию object с вложенными param, необходимо передать ему параметры этой конструкции. Они делятся на три группы: 1. параметры непосредственно скрипта; 2. список элементов params вложенных в object. 3. атрибуты элемента object;
Имя параметра
Тип параметра
Описание параметра
swfUrl
String, обязательный
URL SWF файла
id
String, обязательный
id HTML элемента (содержащего альтернативный контент) который должен быть заменен на Flash контент
width
String, обязательный
ширина SWF
height
String, обязательный
высота SWF
version
String, обязательный
версия Flash плеера необходимого для данного SWF (формат: "major.minor.release")
expressInstallSwfurl
String, необязательный
задает URL для express install SWF и активирует Adobe express install. Обратите внимание, что express install срабатывает только один раз (при первом выполнении), требует Flash плеер версии 6.0.65 или старше на Win или Mac платформах. Минимально возможный размер SWF для его работы 310x137px.
flashvars
Object, необязательный
переменные передаваемые Flash в виде пар имя:значение
params
Object, необязательный
элементы params вложенные в object в виде пар имя:значение
attributes
Object, необязательный
атрибуты элемента object в виде пар имя:значение
callbackFn
JavaScript функция, необязательный
может быть использована для определения функции обратного вызова, оповещая об успешном или неуспешном внедрении файла SWF
... Параметры перечисляются через запятую. Необязательные параметры можно пропускать, заменяя значением false. При этом замыкающие false можно не указывать. Например вместо:
Параметры flashvars, params и attributes являются JavaScript объектами, их можно пропустить не только вышеуказанным методом, но и передав пустой объект:{} ...
params
Это те атрибуты, которые в нашем примере выглядят вот так:
Code
var params={}; params.menu="false";
Каждая пара имя:значение «развернется» скриптом в отдельный тег param. ...
Список элементов params вложенных в object и их значений
Имя параметра
Описание параметра и возможные значения
play
Определяет будет ли проигрываться Flash сразу же после загрузки в браузер. Возможные значения:
true — Flash будет проигрываться сразу же после загрузки в браузер (значение по умолчанию),
false — Flash не будет проигрываться сразу же после загрузки в браузер.
loop
Определяет, будет ли ролик повторятся или остановится, когда достигнет последнего кадра. Возможные значения:
true — ролик будет повторятся (значение по умолчанию),
false — ролик остановится, когда достигнет последнего кадра.
menu
Возможные значения:
true — отображает полное меню, предоставляя пользователю разнообразные возможности для управления воспроизведением (значение по умолчанию),
false — отображает меню, которое содержит только настройки и опции Flash.
quality
Качество. Возможные значения:
low — отдается предпочтение скорости загрузки перед качеством изображения и никогда не используется anti-aliasing,
autolow — отдается предпочтение скорости загрузки, но по возможности качество улучшается (воспроизведение начинается при выключенном anti-aliasing, но если Flash Player обнаруживает, что процессор может обрабатывать его, anti-aliasing включается),
autohigh — поддерживает в равной мере и скорость воспроизведения и качество изображения (воспроизведение начинается при включенном anti-aliasing, но если частота кадров оказывается меньше заданной, anti-aliasing выключается),
medium — использует anti-aliasing, но не сглаживает растровые изображения, качество оказывается лучше, чем с параметром low, но хуже чем с параметром high,
high — способствует увеличению скорости воспроизведения и всегда применяется anti-aliasing (если ролик не содержит анимацию, растровые изображения сглаживаются, если ролик содержит анимацию, растровые изображения не сглаживается),
best — стремится к высшему качеству изображения и не обращает внимание на скорость загрузки (всегда применяется anti-aliasing и сглаживаются все растровые изображения).
scale
Масштаб. Возможные значения:
showall — делают весь ролик видимым в указанной области без искажений, при сохранении пропорций оригинального фильма, т.е. границы могут появляться на двух сторонах (значение по умолчанию),
noborder — масштабирует ролик так чтобы он заполнил все доступное пространство, без искажений, но возможно, с некоторыми обрезками, при сохранении пропорций оригинального фильма,
exactfit — весь ролик отображается в указанной области, не пытаясь сохранить оригинальные пропорции (возможны искажения).
salign
Задает горизонтальное или вертикальное (относительно его содержимого) выравнивание объекта в блоке.
l (left) — выравнивают объект относительно левой стороны и обрезают по остальным трем краям, если размер превышает размер блока.
r (right) — выравнивают объект относительно правой стороны и обрезают по остальным трем краям, если размер превышает размер блока.
t (top) — выравнивают объект относительно вехней стороны и обрезают по остальным трем краям, если размер превышает размер блока.
tl(top left) — выравнивают объект относительно верхнего левого угла и обрезают по остальным краям, если размер превышает размер блока.
tr(top right) — выравнивают объект относительно верхнего правого угла и обрезают по остальным краям, если размер превышает размер блока.
По умолчанию объект находится в центре блока и обрезается по краям блока, если он больше.
wmode
Задает свойство Window Mode для Flash ролика, определяя прозрачность, слой и позиционирование в браузере. Возможные значения:
window — ролик проигрывается в своем прямоугольном окне на веб-странице, opaque - ролик скрывает все, что расположено на странице за ним,
opaque — ролик скрывает все, что расположено на странице за ним,
transparent — фоновый цвет HTML страницы виден сквозь все прозрачные части ролика, что может замедлить анимацию.
bgcolor
Фоновый цвет (Шестнадцатеричное значение RGB) в формате #RRGGBB. Задает цвет фона в ролике. Используется для переопределения настроек цвета фона, указанного в файле Flash. Этот атрибут не влияет на цвет фона HTML-страницы.
base
Или [базовый каталог] или [URL]. Задает базовый каталог или URL и используются для задания относительного пути в ролике Flash Player. Этот атрибут полезен, когда Flash-ролик хранится в отельном от других файлов каталоге.
swliveconnect
Определяет, должен ли браузер запустить Java при первом запуске Flash Player. Возможные значения:
true — браузер должен запустить Java при первом запуске Flash Player,
false — браузер не должен запускать Java при первом запуске Flash Player (значение по умолчанию).
Если вы используете JavaScript и Flash на одной странице, Java должен быть запущен коммандой FSCommand.
flashvars
Переменная. Требуется Macromedia Flash Player 6 или выше. Используется для передачи переменных в ролик. Формат строки — набор пар имя=значение, разделенных знаком &. Поддерживаются строки размером до 64KB.
devicefont
Задает шрифт, для отображения строк. Шрифт не встраивается в Flash, а используется как рекомендуемый при выборе из имеющихся у пользователя.
allowscriptaccess
Разрешение доступа скрипта. Возможные значения:
always — SWF файл может взаимодействовать со страницей HTML, в которую он встроен даже если файл SWF находится на другом домене,
sameDomain — SWF файл может взаимодействовать со страницей HTML, в которую он встроен только если файл SWF находится этом же домене (значение по умолчанию),
never — SWF файл не может взаимодействовать ни с какой страницей HTML (это используется для отключения ненадежных роликов).
seamlesstabbing
Новый параметр для создания бесшовной табуляции. Возможные значения
true — при использовании кнопки Tab можно будет перейти с элементов ролика в HTML либо в браузер, если после ролика в HTML нет ничего, что может получить фокус (значение по умолчанию);
false — отключение бесшовной табуляции. Восстанавливает поведение Flash Player 6, в котором табуляция с последнего элемента внутри ролика приведет на первый.
ActiveX Flash Player поддерживает бесшовную табуляцию, начиная с версии 7.0.14.0.
Тут всего-навсего написано: «Флешку из файла «/_example/swf/test.swf» вставить в HTML элемент c id="replaceMe". Ширина флеша 600px, высота 400px. Требуемая версия Flash плеера 9.0.0. Для установки плеера при его отсутствии используем файл «/_theme/_swf/_js/expressInstall.swf». В флеш передаем три переменных name1="hello" name2="world", name3="foobar". Отображаем меню, которое содержит только настройки и опции Flash. Созданному тегу object присваиваем id="myDynamicContent" и name="myDynamicContent"».
Для вставки объектов в HTML страницу используется тег object, для браузеров, которые не понимают object дополнительно применяется тег embed.
Когда применяешь эти теги сталкиваешься с массой различных параметров. Эти параметры служат для настройки отображения и работы вставляемого объекта. Например, довольно типичный вариант вставки флеша может выглядеть так:
Code
<object data="http://www.xiper.net/examples/flash/images/test.swf" type="application/x-shockwave-flash" height="300" width="200"> <param name="menu" value="true" /> <param name="quality" value="high" /> <param name="wmode" value="transparent" /> <div>Тест для поисковиков и браузеров не поддерживающих плагины</div> </object>
Таких параметров довольно много. Чтобы не потонуть в дебрях param и object смотри таблички выше.
Для старых браузеров, которые не поддерживают object применяется тег embed. Параметры у него сходные с object, а синтаксис немного отличается:
Code
<object data="http://www.xiper.net/examples/flash/images/test.swf" type="application/x-shockwave-flash" height="300" width="200"> <param name="wmode" value="transparent" /> <div>Тест для поисковиков и браузеров не поддерживающих плагины</div> <embed type="application/x-shockwave-flash" src="http://www.xiper.net/examples/flash/images/test.swf" width="200" height="300" wmode="transparent"/> </object>
Методы вставки flash в HTML
Двусоставной метод вставки flash в HTML
Метод характеризуется использованием двух тегов: object и embed, с перечислением необходимых параметров и атрибутов.
Вставка flash на сайт двусоставным методом имеет свои очень весомые достоинства:
Полная и бескомпромисная кроссбраузерность
Установка флеш плагина прямо у вас на сайте, это очень важно, тк Вы не теряете посетителя, а может быть и клиента!
Из данного кода видны очевидные недостатки:
Дублирование параметров
Невалидность тега embed
Иррациональность
Использование необходимых, но малопонятных параметров типа classid и codebase
classid - при вставке flash это константа, всегда имеет значение clsid:d27cdb6e-ae6d-11cf-96b8-444553540000, это значение указывает на элемент ActiveX; codabase - этот атрибут содержит ссылку на Flash-плеер, для установки плеера, если он отсутствует на компьютере пользователя;
Стоит отметить, при публикации флеш-ролика из программы Adobe Flash вставка swf-файла в HTML разметку осуществляется именно двусоставным методом. ...
Метод вложенных объектов
Метод характеризуется использованием двух тегов object, где один из них вложен в другой.
Вставка flash на сайт методом вложенных объектов имеет следующие плюсы:
Валидность и соответствие стандартам
Возможность показа альтернативного содержимого, если не установлен flash-плеер
Этот метод имеет много недостатков, такова цена валидности:
Дублирование параметров
Объемный код
Иррациональность
Использование условных комментариев (для обеспечения кроссбраузерности)
Не все браузеры предложат установить flash-плеер, при его отсутствии
Как видно из кода цена валидности действительно высока. Соответствие стандартам, полезно ровно до тех пор, пока не нарушается кроссбраузерность, правильность отображения и удобство использования. Если бы можно было обойтись одним тегом object, без дублирования параметров и атрибутов, веб-мастера не стали бы изобретать многочисленные "велосипеды". Хотя использование условных комментариев (conditional comments) валидно, вряд ли кто-то скажет, что это действительно удобно. ...
Вставка флеш на сайт методом Flash Satay
Метод характеризуется, использованием тега object, минимализацией кода вставки flash на сайт и использованием, при необходимости, дополнительного флеш-загрузчика (прелоадера).
Основная идея заключается в избавлении веб-мастеров от необходимости использовать тег embed, вместе с тем отбрасывая необходимость дублировать параметры и делая код валидным.
Code
<object data="/_example/swf/1.swf" type="application/x-shockwave-flash" height="400" width="600"> <param name="quality" value="high" /> <param name="wmode" value="transparent" /> <param name="movie" value="/_example/swf/1.swf" /> <div>Тест для поисковиков и браузеров не поддерживающих плагины</div> </object>
Вставка флеш на сайт методом Flash Satay, достаточно оптимизирована и удобна. Метод хорошо подойдет для легких flash-роликов (например flash баннеров), если флеш-контент весит много Мб или должен быть расчитан и на аудиторию с низкой скоростью интернета, то нужно использовать загрузчик, в который передается путь к основному файлу. Это связано с особенностью данного метода, флеш содержимое будет отображено только после полной загрузки. Стоит отметить, что для большинства флеш приложений так или иначе нужно использовать прелоадер. В данном слечае путь к загружаемому файлу передается через атрибут data и Get-переменную data="c.swf?path=myContent.swf", можно передавать пусть и другими способами, например, через FlashVars.
Плюсы использования метода Flash Satay:
Валидная вставка flash в HTML
Кроссбраузерная вставка flash в HTML
Возможность показа альтернативного содержимого
Минусы вставки флеш методом Flash Satay:
Отображение флеш-контента только после полной загрузки
Необходимо использовать прелоадер (загрузчик) для тяжелых флеш роликов и приложений
Необходимо передать путь загружаемого флеш ролика
Не все браузеры предложат установить flash-плеер, при его отсутствии
Вставка Flash на сайт методом SWFObject
Об этом методе написано выше. ... При вставке тега object в HTML, а также динамической вставке flash с помощью SWFObject, может использоваться уйма разных параметров. Грамотный HTML кодер должен разбираться в этой теме. А начинающим,поможет данный материал.
Прошу о помощи! Перечитал вашу статью, уж самое лучшее, что смог найти в сети. Однако почему-то мой flash не хочет отображаться на странице. Вот ссылка: http://www.auto-number.biz/noname.html Сейчас стоит самый простой способ вставки. Перепробовал почти все Ваши варианты, но флэш так и не отображается. Однако на локальной машине у меня все работает. Может причина в самом файле? Путь проверял, все совпадает. Специально в корень сайта вкладываю файл. Помогите, пожалуйста. За ранее благодарен.