Xiper

Активация flash

Автор: Евгений Рыжков Дата публикации:

Замечали наверное, что Internet Explorer и Opera требуют клика по flash-объекту? Это так называемая активация активных элементов на странице, относится к <object>, <embed> и <applet>. Только после клика объект начинает вести себя как активный: работает контекстное меню, переход по ссылке, прописанной во flash и т.д.

Разработчики IE данную функцию ввели в целях безопасности, т.к. флеш активно использует ActiveX, который много чего может наделать на машине пользователя, разработчики ввели данную активацию, чтобы никакие элементы на веб страницах ничего не делали без ведома пользователя. Как это примерно выглядело в браузере:

так в IE требовалась активация у flash объектов

Так же, вокруг не активированного объекта в IE появлялась характерная рамка.

Internet Explorer начал использовать данную функцию в апреле и по многочисленным жалобам на неудобство отменил ее в апреле. Активация флеш будет требоваться в следующих версиях браузера:

  • IE 6 in Windows XP Service Pack 2 (SP2)
  • IE 6 in Microsoft Windows Server Service Pack 1 (SP1)
  • IE 6 in Windows Server Release 2 (R2)
  • IE 6 in Windows Server Service Pack 2 (SP2)
  • IE 7 in Windows XP SP2
  • IE 7 in Windows Server SP1
  • IE 7 in Windows Server SP2
  • IE 7 on Windows Vista

Некоторых пользователей дополнительный клик раздражает, другие просто подумают, что объект не рабочий. А теперь представь, что на на сайте, с посещаемостью в несколько десятков тысяч в сутки, 10% из кликнувших по рекламному баннеру, не догадались, что нужно кликнуть повторно. Последствия этого для рекламодателя могут быть не очень радостные. А если меню сайта построено на flash, задолбаться можно кликать по два раза каждый раз когда захочешь перейти в другой раздел.

Решение 1 — простое

Используем простую динамическую вставку объекта на страницу с помощью javasctipt:

<script type="text/javascript">
document.write('<object type="application/x-shockwave-flash" data="images/flash/test.swf" width="200px" height="300px">');
document.write('<param name="movie" value="images/flash/test.swf" />');
document.write('</object>');
</script>

IE обманули, Opera нет.

Решение 2 — библиотека SWFObject

Используйте динамическую вставку flash-объектов, с помощью библиотеки javascript SWFObject — мощная библиотека, которая в ближайшем будущем может стать стандартом по внедрению объектов на HTML страницы. Помогает активировать объекты в IE и Opera.

Решение 3 — скрипт AC_RunActiveContent

Работает по принципу вышеприведенных решений, только имеет свой особый синтаксис. Скрипт состоит из двух файлов:

  • AC_RunActiveContent.js
  • AC_ActiveX

Скачать их можно на сайте adobe. Первый из них отвечает за подключение flash и shockwave объектов. AC_ActiveX для подключение объектов других типов (судя из названия, для работы с activeX). Скрипты подключаем как обычно, в секции <head>:

<script type="text/javascript" src="js/AC_RunActiveContent.js"></script>
<script type="text/javascript" src="js/AC_ActiveX.js"></script>

Для вставки flash контента используем функцию AC_FL_RunContent:

AC_FL_RunContent(
   "[имя атрибута 1"], "[значение атрибута 1]", 
   "[имя атрибута 2"], "[значение атрибута 2]", 
   ... 
   "[имя атрибута N"], "[значение атрибута N]", 
);

для вставки же shockwave используем функцию AC_SW_RunContent:

AC_SW_RunContent(
   "[имя атрибута 1"], "[значение атрибута 1]", 
   "[имя атрибута 2"], "[значение атрибута 2]", 
   ... 
   "[имя атрибута N"], "[значение атрибута N]", 
);
Какая разница между flash и Shockwave?

Оба медиа проигрывателя. Но между ними есть разница. Flash более легкий, быстрей загружается и запускается. Shockwave — плеер с большим количеством функций, в основном предназначен для построения интерактивных интерфейсов, игр и т.п. запускается медленней.

Разумеется, что для динамической вставки требуется чтобы javascript на компьютере пользователя был включен. Чтобы не лишить шанса увидеть объект пользователям с отключенным javascript следует воспользоваться тегом <noscript> и продублировать объект статической разметкой.

Пример кода для вставки простого объекта с активацией:

<script type="text/javascript">
AC_FL_RunContent(
	'width','200',
	'height','300',
	'data','path-to/swf-file.swf',
	'quality','high',
	'pluginspage','',
	'movie','path-to/swf-file' ); <!--обрати внимание чтот тут расширение файла не нужно -->
</script>
<noscript>
	<object
		 data="path-to/flash-file.swf"
		 width="100"
		 height="22">
		<param name="movie" value="path-to/flash-file.swf" />
		<param name="quality" value="high" />
		<embed
			src="path-to/flash-file.swf"
			quality="high"
			pluginspage=""
			type="application/x-shockwave-flash"
			width="100"
			height="22">
		</embed>
	</object>
</noscript>

Материалы

  • MSDN :: Activating ActiveX Controls
  • Adobe :: Preparing your website to handle the Microsoft changes to Internet Explorer
  • Adove :: What''s the difference between Shockwave and Flash?