Как и большинство людей, я использую SWFObject для встраивания файлов Flash (swf) в мои веб-проекты.
Как вы знаете SWFObject предлагает два способа встраивания Flash: статическая публикация и динамическая публикация.
Статическая публикация использует регулярную разметку для вставки файла в документ, а также выполняет проверки с помощью JavaScript, которые вы не можете сделать с помощью обычной разметки. Это хорошо, как если бы у вас были клиенты, у которых не может быть включен JavaScript (поисковые системы, некоторые переносные устройства...), файл все равно будет отображаться (если у них установлен правильный плагин Flash). Но если у вас есть люди на устаревшем/непроверенном Internet Explorer (между апрелем 2006 года и апрелем 2008 года), у них будет страшный "клик для активации" на взаимодействуют с Flash.
Динамическая публикация использует JavaScript для встраивания Flash. Это избавит вас от функции "нажмите, чтобы активировать" в старом IE, но если JavaScript выключен, Flash вообще не будет.
Оба метода имеют свои преимущества и неудобства. В утопическом мире мы все будем использовать метод динамической публикации, но мы (или, по крайней мере, некоторые из нас, как я) застряли с клиентами, использующими действительно старые системы с IE 6 (они хотели бы обновить, но они не могут из-за плохого разработанное программное обеспечение, которое будет стоить 10K + $для обновления). Мне нужно поддерживать устаревший IE и вы хотите избавиться от функции "нажмите, чтобы активировать", поддерживая пользователей с отключенным JavaScript.
Как объединить динамические методы публикации static и? Что-то вроде:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>SWFObject 2 static+dynamic publishing example page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("test.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf");
</script>
</head>
<body>
<div id="myContent">
<object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
<param name="movie" value="test.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="test.swf" width="300" height="120">
<!--<![endif]-->
<div>
<h1>Alternative content</h1>
<p><a href="#" onclick="location.href='http://www.adobe.com/go/getflashplayer'; return false;"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
Я показал это интегратору, и он сказал мне, что я должен использовать теги <object>
и <embed>
...
Каким будет окончательный способ внедрения Flash в веб-проекты? Решение, которое:
- Работает с выключенным JavaScript (Flash встроен в альтернативный контент)
- Будет проходить валидатор W3C
- Удалит "щелчок для активации" на устаревшем/незагруженном IE
- Будет использовать обнаружение Flash/автоматическую установку SWFObject
EDIT: Добавлена награда. Пожалуйста, я не хочу видеть ответы типа "не беспокойтесь, у меня нет JavaScript с сегодняшнего дня" или "если javascript выключен, скорее всего, Flash тоже не будет".
EDIT 2: Ответ, который я ищу, - это лучший способ встроить Flash статически (с обычными тегами HTML). После этого я добавлю динамическую публикацию. Что-то как это, которое будет работать в всех основных браузерах с IE 6, и это пройдет проверку W3C.