Книга для чайников по технологии Flash


Неожиданные применения Flash - часть 2


Для решения этой незамысловатой задачки (на анлийском оно лежит вот тут)

http://www.macromedia.com/support/flash/ts/documents/scriptfree_detection.htm

попробуем создать ролик, состоящий из пустых кадров, первому из которых не будем назначать никаких действий, второму зададим следующее действие: Get URL ("flash4.html") Set Variable: "var" = "end"

Причем впишем "flash4.html" вместе с кавычками в окошко Get URL c установленной опцией "Variable". Вот так

В восьмом кадре сделаем:

Go to and Stop (var)

В девятом кадре:

Get URL ("flash3.html")

Причем впишем flash3.html без с кавычек в окошко Get URL c установленной опцией "String Literal". Вот так

и десятому кадру присвоим метку "end" и действие

Stop

После этого проэкспортируем эти кадры в .swf (тут я назвал его index.swf и получился он весом около 130 байт) и, открыв в каком-либо редакторе .html файл, получившийся после "Publish", внесем в него небольшие изменения.

<html>
<head>
<title>Detection</title>
<meta HTTP-EQUIV="Refresh" CONTENT="4;URL=nonflash.html">
</head>
<body bgcolor="#000000">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ID=index WIDTH=1 HEIGHT=1>
<param NAME=movie VALUE="index.swf">
<param NAME=quality VALUE=high>
<param NAME=bgcolor VALUE=#000000>
<embed src="index.swf" quality=high bgcolor=#0000
WIDTH=1 HEIGHT=1 TYPE="application/x-shockwave-flash">
</embed>
</object>
</body>
</html>

Невооруженным глазом видно, что из исходного текста удалены все url, принудительно выставлены размеры ролика 1х1 (реальный размер .swf может быть любым) и в заголовке появилась строчка насчет HTTP-EQUIV="Refresh" (переход на nonflash.html через 4секунды).

Посмотрим теперь, как это все работает.

Предположим, что на страничку зашел пользователь с полноценной поддержкой Flash4. Тогда он будет практически моментально перенаправлен на flash4.html из действия внутри 2-го кадра. 8-й кадр в этом случае является страховочным. Ecли коннект хреновый и за время попытки уйти на flash4.html дело дойдет до 8-го кадра, девятый будет перепрыгнут и дожидаться выполнения действия из второго кадра ролик будет находясь в 10-м. Если же плугин у посетителя устаревший, то он не поймет этих двух переходов и, соответственно, пойдет дальше и будет перенаправлен на flash3.html в девятом кадре. Необходимо заметить, что некоторые методы определения версии плугина, на основе циклов, работают неустойчиво - трудно предсказать реакцию Flash3-плугина на действия внутри циклов if - к сожалению, в разных условиях реакция получается разная. Если вам больше нравятся исторические но очень проверенные методы, можно использовать что-то вроде вот этого .fla. Далее, если браузер посетителя вообще не знает что такое .swf, через 4секунды сработает мина замедленного действия из заголовка и посетитель будет переброшен на nonflash.html чтобы полюбоваться там, на чисто текстовый вариант вашего сайта. Работа всей этой комбинации основана на том, что перенаправление по "Frame Action" из .swf происходит быстрее, чем срабатывает "Refresh" в заголовке. Время перехода указанное в строке <meta... может зависеть от множества параметров, главным из которых является скорость вашего сервера. В большинстве случаев 2-3 секунд вполне достаточно для ухода на нужную страницу по Frame Action, поэтому тут используются 4 секунды. Размеры ролика уменьшены до точки по одной простой причине - например IE, при обнаружении неизвестного объекта предлагает перейти на страницу для "поиска ..." чего-то там. Но переход этот осуществляется только после щелчка на пустом окошке из-под объекта, а на окошко размером 1х1 щелкнуть тяжеловато :)




Начало  Назад  Вперед