главная -- web-design -- неожиданные применения Flash (2)           вернуться на главную
На это месте могла находиться Ваша РЕКЛАМА!

      Неожиданные применения Flash: Rambler's Top100

Невооруженным глазом видно, что из исходного текста удалены все 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 щелкнуть тяжеловато :)
В этом процессе есть еще одна тонкость - если кто-то зайдет на вашу страничку сначала броузером без поддержки Flash и потом, установив эту поддержку, попытается еще раз, он может быть снова переброшен на nonflash.html из-за наличия кэша браузера. Я пока не вижу никаких способов надежно обойти эту проблему без использования Cookies. Не имеет смысла именно здесь ударятся в описание того как это сделать - хороших руководств по ява-скрипту много. Но я например пробовал записывать Cookie скриптом из nonflash.html, а в заголовке detection.html пытался прочитать Cookie и в случае его обнаружения убивал Cookie и в заголовке подставлял

 document.write("<meta HTTP-EQUIV='Refresh'
      CONTENT='1'>");

а в случае не обнаружения

document.write("<meta HTTP-EQUIV='Refresh'
      CONTENT='4;URL=nonflash.html'>");

Что характерно, это почему-то срабатывало :)
Теперь нам остается поприветствовать пользователей IE на flash4.html и это уж сделать совсем просто. В исходный код flash4.html добавим несколько знаков:
вместо

    <param NAME=movie VALUE="main.swf"> 

сделаем

    <param NAME=movie VALUE="main.swf?ie=1">

После этого добавим в основную сцену main.swf объект типа "Символ" вида "Movie Clip" c Instance Name hi содержащий текст приветствия и в первый кадр добавим следующее действие

If (ie=1)
      Set Property ("/hi", Visibility) = "1"
Else
      Set Property ("/hi", Visibility) = "0"
End If

Таким образом при заходе на эту страничку эксплорером из исходного текста html в swf будет передана переменная ie со значением 1, а если посетитель использует NN эта переменная не будет передана в swf (ну не понимает NN тэга <object... :) Соответственно в первом кадре, после проверки равенства ie=1, будет принято решение насчет видимости или невидимости приветствия.
На этом в принципе задачу можно считать решенной. Не знаю кому как, а мне например этот способ кажется значительно проще чем стандартный ява-скриптовский :)
PS: Только не нужно думать, что я агитирую за запрет автоустановки плугина в IE - это просто такая задача попалась для примера :) Хотя, в принципе, иногда такой запрет может быть полезен.

2. Пароль на вход.
С помощью все тех же переменных и "Frames Actions" очень легко защитить вход на флэшовые странички паролем. Нужно просто организовать в самом начале ролика (в кадре с акцией Stop) поле ввода и в его свойствах указать имя какой-нибудь переменной (к примеру, Pass) и кнопку Submit, которой можно назначить что-то вроде следующих действий:

On (Release, Release Outside)
      If (Pass eq "truepass")
            Go to and Play ("Welcome")
      Else If (n>3)
            Go to and Play ("Sorry - you are wrong")
      Else If (n eq "")
            Set Variable: "n" = "1"
      Else If (0 < n < 3)
            Set Variable: "n" = n+1
      End If
End On

Очень легко увидеть, что при правильно введенном пароле (слово "truepass" в поле ввода (само собой без кавычек :)) посетитель будет перенаправлен на ключевой кадр с меткой Welcome, а после пятой неправильной попытки - на метку Sorry - you are wrong. Для пущей защищенности не следует вводить правильное слово в поле ввода по умолчанию :) Кроме того, можно основное содержание подгружать из дополнительного .swf действием Load Movie из кадра с меткой Welcome. Причем действие это лучше привязать к нажатию кнопки - действия кнопок немножко сложнее вычислить, не имея исходника. Особенно если перед проверкой с введенным словом производятся какие-нибудь арифметические или логические операции, а имя загружаемого ролика передавать в виде переменной.
 

Пожалуй, пока хватит :) Пора перейти от этих тривиальных задачек к чему-нибудь поинтереснее. Далее мы поговорим об определении быстродействия компьютера посетителя флэшовой странички, об оценке качества его соединения с интернетом, об "удаленном администрировании" своей странички, о том, как Flash может облегчить жизнь держателей варезных сайтов, о попытках подменить некоторые функции Cookes, о сургуче, снарках и наконец о ремонте некоторых неисправностей карданного вала методами Flash :) Но это все можно будет узнать только на следующей страничке...

Продолжение: Часть1, Часть3, Часть4  
  Rambler's Top100          

Сайт создан в системе uCoz