Javascript - Flash міст
| Пошук по форуму |
| Розширений пошук |
| До сторінки. |
Javascript Flash міст
Використовуючи ці способи, JavaScript може отримати доступ до буфера обміну ОС, об'єктам SharedObject, що зберігаються, керувати flash-інтерфейсами і багато іншого.
Зв'язок JS з об'єктом Flash
Який би спосіб комунікації ми не вибрали, спочатку JS повинен вміти знаходити об'єкт Flash на сторінці.
Для того, щоб все працювало кросбраузерно, Flash-ролик потрібно вставити з використанням обох тегів: object і embed , наприклад:
У цьому прикладі суттєві деталі:
- Ім'я ролика BridgeMovie дублюється як object.id та embed.name.
- Шлях до ролика bridge.swf дублюється в object/embed
- Параметр allowScriptAccess="sameDomain"
- Дублюються розміри ролика
Тепер об'єкт ролика можна отримати з window["BridgeMovie"] для IE або document["BridgeMovie"] в інших браузерах:
Далі ми розберемо кошти на комунікації з цим роликом.
Flash викликає Javascript
Найдавніший, знайомий більшості флешерів спосіб - це виклик javascript-функції за допомогою getURL з протоколом javascript:
- Працює у всіх броузерах
- Flash 5 і вище
- Простий у застосуванні
- Чи не повертає результат
- Довжина рядка, що передається, обмежена 508 символами.
Виклик здійснюється так:
Щоб прийняти цей виклик, Javascript має бути спеціальна обв'язка.
Для цього потрібно в Publish Settings:
- У вкладці Formats включити публікацію html-файлу
- У вкладці HTML вибрати Template: Flash with FSCommand
Шаблон генеруванняjavascript-обв'язування складається з двох частин: функція обробки та додаткового коду для IE.
Функція обробки fsCommand
Назва функції має вигляд _DoFSCommand. У нашому випадку це BridgeMovie_DoFSCommand
Перший аргумент - ім'я функції, другий - рядок аргументів. Найпростіший варіант виглядає так:
Виклик, наприклад, функції show з Flash призведе до ланцюжка викликів:
- (Flash) fsCommand("show","something")
- (JS) BridgeMovie_DoFSCommand("show","something")
- (JS) show("something")
Додаткова обв'язка для IE/Win
Цей код потрібен тільки для IE під Windows, на додаток до BridgeMovie_DoFSCommand, тому що в цьому браузері fsCommand викликає не Javascript, а VBScript.