Активация flash при загрузке страницы

Дата публикации: 06.03.2009

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

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

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

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

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

  • IE 6 in Windows XP Service Pack 2 (SP2)
  • IE 6 in Microsoft Windows Server 2003 Service Pack 1 (SP1)
  • IE 6 in Windows Server 2003 Release 2 (R2)
  • IE 6 in Windows Server 2003 Service Pack 2 (SP2)
  • IE 7 in Windows XP SP2
  • IE 7 in Windows Server 2003 SP1
  • IE 7 in Windows Server 2003 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','http://www.macromedia.com/go/getflashplayer',
	'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="http://www.macromedia.com/go/getflashplayer"
			type="application/x-shockwave-flash"
			width="100"
			height="22">
		</embed>
	</object>
</noscript>

Материалы

Показать комментарии