Стаття swfobject

задача: розставити крапки в питанні визначення версії флеш плеєра у користувача і в проблемі роботи з патчем Internet Explorer, який глушить ActiveX контент.

  • [Апдейт] SWFObject.write () тепер повертає true або false залежно від того, чи був код SWF ролика виведений в тіло сторінки (true - якщо був)
  • [Апдейт] Пакет'com 'вилучений, тепер все знаходиться в пакеті' deconcept '
  • [Зміна] Код дещо змінений для кращої роботи в браузерах Mozilla.
на початок

Любителі Фотаком код можуть відразу зайнятися улюбленою справою: тут.

Користуватися SWFObject легко. Просто включите файл swfobject.js в тіло сторінки, і зможете впроваджувати Flash ролики, обходячи останній апдейт IE. Ось приклад мінімально необхідної кількості коду для впровадження ролика Flash:
Розберемо, що ж робить код вище: Створюємо HTML елемент div, в якому розміщуватиметься ролик. Його контент буде заміщений Flash роликом, тому ті, у кого Flash плеєр є, цього контенту ніколи не побачать. Ця додаткова можливість грає на руку при оптимізації для пошукових систем і може бути використана як альтернативний контент для тих небагатьох, у кого плеєр не встановлений.

SWFObject працює з усіма поширеними браузерами.

На PC.
  • IE5 / 5.5 / 6
  • Netscape 7/8
  • Firefox
  • Mozilla
  • Opera
На Mac.
  • Safari
  • Firefox
  • IE5.2
  • Netscape 6/7
  • Mozilla
  • Opera 7.5+
SWFObject визначає весію Flash Player починаючи з 3 і, так як висновок виробляється з динамічно, «активувати» Flash контент користувачеві не потрібно.

Приклад, наведений вище, показує найпростіший варіант використання SWFObject. Але як бути, якщо ви хочете використовувати якісь додаткові параметри для флеш плагіна? SWFObject пропонує дуже простий спосіб додавання будь-яких додаткових параметрів. Приклади, наведені нижче, показують різні варіанти вставки флеш-ролика в сторінку.

А як же передача параметрів за допомогою FlashVars?

Використання FlashVars - можливо, найпростіший спосіб передати дані з HTML в Flash ролик, проте передача можливо лише одного разу, при ініціалізації завантаженого ролика. Як правило, для цього додається параметр "flashvars" зі значенням на зразок цього: variable1 = value1variable2 = value2variable3 = value3 і так далі. SWFObject спрощує вам життя, перетворюючи додавання змінних в додавання додаткових параметрів. Ось приклад передачі змінних за допомогою FlashVars: Доступ до них можна буде отримати, звертаючись до _root.

SWFObject також містить функцію, що дозволяє аналізувати довільні передані GET-му змінні.

За допомогою функції getQueryParamValue () ви можете легко отримати змінну з рядка запиту і передати її у Flash ролик. Ось приклад для рядка запиту, наведеної вище: Функція getQueryParamValue () також може працювати з location.hash. на початок

SWFObject має повноцінну підтримку такої фічі як Macromedia Flash Player Express Install. У SWFObject входить actionscript файл, який взаємодіє з SWFObject і починає автоматичне оновлення плеєра користувача. Користувачеві не доведеться залишати сайт, щоб встановити або оновити плеєр, а по закінченню інсталяції відбудеться автоматичний редирект на вихідну сторінку.

Щоб скористатися ExpressInstall, необхідно включити expressinstall.as в першому кадрі вашого fla исходника, щоб переконатися, що користувачеві необхідно оновити плеєр: Важливо не додавати в перший кадр ніякого іншого вмісту (або не в перший, а в кадр, де відбувається ExpressInstall), що вимагає Flash Player 7 або новіше.

Якщо ваш Flash ролик знаходиться в поп-апі, або якщо користувача після закінчення ExpressInstall необхідно редирект на іншу сторінку. скористайтеся аттрібутом xiRedirectUrl. на початок

SWFObject поширюється на умовах MIT License ліцензії. Простіше кажучи це означає, що ви можете використовувати його як заманеться без яких би то не було обмежень.

Роки застосування Flash технології принесли масу способів визначення версії Flash player. У цьому розділі ми розглянемо найпопулярніші методики і проблеми, які виникають (або можуть виникнути) при їх застосуванні.

  1. Спосіб за замовчуванням або «Покладіться на embed»

Ні для кого не секрет, що Flash вбудовується в сторінку. Вбудовується він за допомогою Object, з приміщенням слідом тега Embed для не-IE заснованих браузерів. Це найбільш часто зустрічається спосіб вбудовування Flash ролика в сторінку, фактично нав'язується нам «чудесної» Macromedia Flash IDE. Спосіб хороший тим, що працює залізно і всюди. Ось приклад:

Недоліки такого підходу:
  • Проблеми з Accessibility. Якщо ви використовуєте Flash Satay, деякі скрінрідери просто проігнорують ваш контент.
  • Після виходу рішення суду у справі Eolas контент. вставлений таким чином, спочатку доведеться активувати кліком.
  • Немає ніякого способу визначення версії плагіна. Якщо плагін не встановлено, то користувачі випробують ті ж проблеми, що і в попередньому випадку.
  • Необхідність в контейнері - часом подібний спосіб призводить до зупинки відтворення ролика. доводиться обходити це контейнером, що додає головного болю, зокрема, при роботі з FlashVars.
  • Більш ранні версії Safari ігнорують тег param - до версій 2.0 (Tiger), 1.3 (Panther) і 1.2.8 (pre-реліз Panther) Safari просто ігнорує тег param. А значить, значення Flashvars, Align, Salign, і т.п. йдуть до чортової бабусі.
  • Класика: ролик, який визначає версію плеєра.

    Розміщуємо на сторінку маленький ролик, завдання якого - перевірити значення змінної $ version і редирект користувача, коли чого.

    Косяки ось які:
    • А на внутрішніх сторінках детекції-то немає! Якщо користувач кидає посилання на сторінку, той автоматично обходить детекцию на всіх сторінках куди не вставили ролик.
    • Після виходу рішення суду у справі Eolas контент. вставлений таким чином, спочатку доведеться активувати кліком.
    • Це невалидность HTML і вже тим більше XHTML - тега embed ні в одній з версій HTML або XHTML ви не знайдете. Однак, так як тег object браузери обробляють по-різному (або ігнорують), тег embed необхідний для підстраховки.
    • Погано позначається на SEO (Search Engine Optimization) - проблема полягає в тому, що прийшов з пошуковика людина, так само як і пошуковий кроулер (crawler) буде милуватися на спеціальну сторінку, на якій немає нічого, крім ролика для детекції.
  • Macromedia Flash Player Detection Kit

    Q. Я чув про якийсь бадиллі, здається, вона зветься Internet Explorer Active Content
    Update. шозахер і чи дозволить SWFObject пофиксить цю бадилля?

    A. Якщо коротко, то так, SWFObject її пофиксил

    Q. А чому перш ніж можна буде ролика я на мить бачу альтернативний контент? (Тільки в IE під Windows)

    A. Це пов'язано з багом FOUC. Фікс додаванням тега link або script в тег head
    (Вставляється тег може бути порожнім).

    Q. Чи можу я за допомогою SWFObject впровадити кілька SWF в одну
    HTML сторінку.

    A. Так, кожен html-контейнер, в який буде поміщений свіф,
    повинен мати унікальний id.

    Q. А як змусити SWFObject працювати під Netscape 4.x.

    Q. А можу я заюзать SWFObject в моєму сверхохренопупітельском блозі?

    Q. А чи можу я юзати SWFObject в Dreamweaver або Golive?

    Q. Тут один Вася спрошает, че ви ваще за пацани. Хто ваще використовує цей
    ваш SWFObject.

    а також він включений в Adobe Photoshop (у Flash фотогалереї) і тисячі інших
    ресурсів. Легендарний Колін Мук рекомендує його як альтернативу
    Macromedia Detection kit.

    Toby Boudreaux допоміг зробити SWFObject набагато більш якісним продуктом. на початок
    назад до списку уроків і рецептів