Javascript <-> Flash мост
Эта статья описывает, как вызывать из Javascript методы Flash и наоборот.
Используя эти способы, javascript может получить доступ к буферу обмена ОС, хранимым объектам SharedObject, управлять flash-интерфейсами и многое другое.
Какой бы способ коммуникации мы не выбрали, для начала JS должен уметь находить объект Flash на странице.
Для того, чтобы все работало кроссбраузерно, Flash-ролик нужно вставить с использованием обоих тегов: object и embed , например так:
<object
id="BridgeMovie" width="400" height="200"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="bridge.swf" />
<param name="allowScriptAccess" value="sameDomain" />
<embed
src="bridge.swf"
name="BridgeMovie" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
width="400" height="200" scale="exactfit"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>
В этом примере существенны детали:
- Имя ролика
BridgeMovie дублируется как object.id и embed.name .
- Путь к ролику
bridge.swf дублируется в object/embed
- Параметр
allowScriptAccess="sameDomain"
- Дублируются размеры ролика
Теперь объект ролика можно получить из window["BridgeMovie"] для IE или document["BridgeMovie"] в остальных браузерах:
function getMovie() {
var M$ = navigator.appName.indexOf("Microsoft")!=-1
return (M$ ? window : document)["BridgeMovie"]
}
Далее мы разберем средства для коммуникации с этим роликом.
Самый древний, знакомый большинству флешеров способ - это вызов javascript-функции посредством getURL с протоколом javascript:
getURL('javascript:функция("параметры");');
- Работает во всех броузерах
- Flash 5 и выше
- Прост в применении
- Не возвращает результат
- Длина передаваемой строки ограничена 508 символами.
Вызов осуществляется так:
fsCommand("функция", "параметры")
Чтобы принять этот вызов, в Javascript должна быть специальная обвязка.
Редактор Macromedia Flash может генерировать ее автоматически при публикации ролика.
Для этого нужно в Publish Settings:
- Во вкладке Formats включить публикацию html-файла
- Во вкладке HTML выбрать Template: Flash with FSCommand
Генерируемый шаблон javascript-обвязки состоит из двух частей: функция обработки и дополнительного кода для IE.
Название функции имеет вид <ИмяРолика>_DoFSCommand . В нашем случае это BridgeMovie_DoFSCommand
Первый аргумент - имя вызываемой функции, второй - строка аргументов.
Простейший вариант выглядит так:
function BridgeMovie_DoFSCommand(command, args) {
// вызвать функцию command с аргументом args
window[command].call(null, args)
}
Вызов, например, функции show из Flash приведет к цепочке вызовов:
- (Flash)
fsCommand("show","something")
- (JS)
BridgeMovie_DoFSCommand("show","something")
- (JS)
show("something")
Этот код нужен только для IE под Windows, в дополнение к BridgeMovie_DoFSCommand , так как в этом браузере fsCommand вызывает не Javascript, а VBScript.
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1
&& navigator.userAgent.indexOf("Windows") != -1) {
document.write('<script language=\"VBScript\"\>\n');
document.write('On Error Resume Next\n');
document.write('Sub BridgeMovie_FSCommand(ByVal command, ByVal args)\n');
document.write(' Call BridgeMovie_DoFSCommand(command, args)\n');
document.write('End Sub\n');
document.write('</script\>\n');
}
Здесь VBScript просто передает вызов Javascript'у.
Итак, плюсы и минусы метода fscommand :
- Flash 5 и выше
- Не работает под Mac OS
- Не возвращает результат
- Нужен дополнительный JS-код
Этот способ работает, начиная с Flash 8. В отличие от всех предыдущих способов, он не только вызывает javascript, но и передает обратно возвращаемое значение, по возможности сохраняя его тип.
import flash.external.ExternalInterface;
var result = ExternalInterface.call("func", "param1", "param2", ...);
К сожалению, начиная с Flash 8, где он впервые появился, в ExternalInterface нашли большое количество разнообразных багов. Глюки сериализации, самопроизвольное изменение передаваемых данных и т.п.
Эти ошибки поправлены в новейших версиях Flash Player, но многие продолжают использовать более старые редакции Flash 8,9.
Актуальную информацию об ошибках можно получить из google, набрав "ExternalInterface bug".
- Простота
- Возвращает результат
- Разнообразные баги, в отличие от предыдущих способов
Самый простой способ - установка переменной ролику:
getMovie().SetVariable("message","data")
Обратите внимание - именно SetVariable , не setVariable . Регистр здесь важен.
Чтобы Flash получил значение - можно проверять сообщения, например, на каждом кадре. Это около 12 раз в секунду.
Следующий код срабатывает на каждом кадре и ждет появления значения переменной message .
var message = null
_root.onEnterFrame = function() {
if (message!==null) {
_root.txtRecieve.text = message // получили сообщение
message = null
}
}
- Простота и надежность
- Кросс-браузерность, Flash 5+
- Дорога в одну сторону, не больше одного сообщения за кадр.
Применив ExternalInterface из Flash8+, можно объявить флеш-метод, который будет обрабатывать вызовы из javascript.
Формат вызова:
ExternalInterface.addCallback(функция JS, объект Flash, функция Flash); .
Например, следующий код устанавливает глобальную функцию recieveFromJS как обработчик JS-вызова sendFromJS .
import flash.external.ExternalInterface;
...
ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);
function recieveFromJS(msg) {
_root.txtRecieve.text = msg;
}
В JS достаточно сделать простой вызов:
getMovie().sendFromJS(value);
- Можно тут же получить значение из Flash
- Множество багов в ExternalInterface.
Можно также использовать LocalConnection , как это сделано во Flash-Javascript Integration Kit.
Этот пример пересылает текст из верхнего JS-поля направо во Flash, из нижнего Flash-поля - налево в JS.
Вводите любой, текст и жмите кнопку для пересылки нужным методом.
// Flash Storage example
import flash.external.ExternalInterface;
ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);
function recieveFromJS(msg) {
_root.txtRecieve.text = msg;
}
_root.button.onRelease = function() {
fscommand("recieveFromFlash", _root.txtSend.text);
}
_root.button2.onRelease = function() {
ExternalInterface.call("recieveFromFlash", _root.txtSend.text);
}
_root.button3.onRelease = function() {
var txt = _root.txtSend.text.split('"').join('\\"')
getURL('javascript:recieveFromFlash("'+txt+'");');
}
var message = null
_root.onEnterFrame = function() {
if (message!==null) {
_root.txtRecieve.text = message
message = null
}
}
Скачать .fla - исходник флешки.
function recieveFromFlash(Txt) {
document.getElementById('txtRecieve').value = Txt;
}
function getMovie() {
var M$ = navigator.appName.indexOf("Microsoft")!=-1
return (M$ ? window : document)["BridgeMovie"]
}
function sendSetVariable() {
var value = document.getElementById('txtSend').value
var movie = getMovie()
movie.SetVariable("message", value)
}
function sendExternalInterface() {
var value = document.getElementById('txtSend').value
var movie = getMovie()
movie.sendFromJS(value);
}
/* movie name_DoFSCommand */
function BridgeMovie_DoFSCommand(command, args) {
window[command].call(null, args)
}
// Hook for Internet Explorer.
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 &&
navigator.userAgent.indexOf("Windows") != -1) {
document.write('<script language=\"VBScript\"\>\n');
document.write('On Error Resume Next\n');
document.write('Sub BridgeMovie_FSCommand(ByVal command, ByVal args)\n');
document.write(' Call BridgeMovie_DoFSCommand(command, args)\n');
document.write('End Sub\n');
document.write('</script\>\n');
}
По просьбам читателей - примеры и исходники вынесены на отдельную страницу.
Успешной интеграции!
|
Здравствуйте меня интересует маленький вопросик по поводу вот Этого кода
При Вставке Flash в форму данное обращение необрабатывается в Explorer!!!
Если у вас будет время помогите решить данную сетуацию!!!
Честно - вопрос нихрена не понял. Какое обращение не обрабатывается и что при этом выдает.
Попробуйте примеры на отдельных страницах.
Большое спасибо за такие наглядные примеры - Ваш сайт, наверное, лучший путеводитель по JS в рунете. По крайней мере, мне, гуманитарию, все понятно!
Добрый день.
Вы не могли мне подсказать:
getURL('javascript:функция("параметры");');
Не отрабатывается в последней версии флэша. Т.е. вообще не происходит ни каких событий. Вызов функции не осуществляется. Когда стояла версия 8,0,22,0 все отрабатывалось.
К примеру, на нажатие на кнопку во флэше вешаем getURL('javascript:alert('test');');
А алерт вызывался когда стояла версия 8,0,22,0. Но стоило обновить до последней, то перестал. Может ктонибудь сталкивался с подобной проблемой? Или возможно после обновления какието настройки безопасности флэша поменялись?
Заранее благодарю!
ну если так кавычки ставить, то не будет работать
если это частная опечатка, тогда не знаю..
Огромное спасибо за этот пример, уже как год хотел научиться делать такой мост. Раньше просто не получалось, потом вообще забил, а теперь умею
Big thanks
Спасибо за детальное описание. Действительно понятно даже начинающему.
Здравствуйте.
Прекрасная статья, спасибо!
одно замечание - MSIE 7.0 осуществляет доступ к объекту так же через объект document, вместо объекта window.
Странно, но на локальной машине у меня не заработал ни один из ваших способов, флэш плеер 10
Очень нужно решение и я его так и не нашел. Настройки безопасности вроде сделал...
Без информации о том, какая машина (ОС, браузер), и что именно не заработало - посоветовать ничего нельзя..
Я тоже на локальной машине (запуская HTML минуя сервер) не могу получить вызов JS, а надо именно на локальной. OS WinXP Firefox 3.08
Сам нашел ответ. При вызове плейера нужно использовать параметр 'allowScriptAccess','always'
Ты лучший. Я пару часов потратил на поиски ответа и вот он !!! Все работает и на локальном компьютере.
Подскажите пожалуйста, почему когда я копирую ваш пример и вашу флэшку локально то пример перестает работать?
Здравствуйте!
Читал, что метод SetVariable не работает для OS Mac,
а ExternalInterface работает - правда ли это?
Пробовал делать пересылку из js - flash методом ExternalInterface (OS Windows XP, Flash 8, IE7) - не работает, в чем может быть дело?
Вы пишете, что Flash 8 устарел - а какие не устарели и где их можно скачать?
Было бы неплохо, если бы выложили исходник тестовой страницы целиком,
а также флэш-исходник для Flash 8.
Буду благодарен за ответы на мои вопросы.Всго хорошего
Исходники и примеры выложены, см. конец статьи. То, что Вы слышали про Mac OS, имхо не верно, но все же попросите маковода тестануть
Благодарю за ответ, однако скачал с выложенных примеров исходники bridge.fla, example2.fla - во Flash 8 они не открываются, пишет "unexpected file format" Можно ли их сохранить в Flash 8, будет ли в этом флэше работать пересылка?
Откройте их в более старшей версии флеш и сохраните в формате Flash8
интересная особенность проявилась:
у меня есть некая флешка на странице. она лежит в блоке div. у этого div'a стоит свойство visibility в значение hidden
чего я хочу:
1. флешка загрузилась
2. Внутри флешки обрабатывается команда о завершении загрузки этой флешки
3. Эта команда вызывает функцию на страничке, которая ставит visibility блока div в значение visible.
4. Флешку (и все, что в этом блоке помимо нее) видно, все радуются
что получается сейчас:
1. Флешка загрузилась
2. Событие не отработалось
Судя по тому, что функция вызывается, когда блок div имеет visibility: visible, у меня возникают подозрения, что действия флешки игнорируются из-за этого свойства (мол, не видно слой, значит и работать ему нельзя).
Вопрос, я прав в своих домыслах? Если да, то каким способом я могу вызвать из флешки метод джаваскрипта?
Добавление флешки на страницу идет через swfObject
Не знаю насчет visible, но с display:none такое видел. Если флешка не видна, то она не работает, и событие прислать не может.
Можно див з-индексом опутить под страницу, а когда понадобится - поднять
Раньше знал только как из flash вызывать функции javascript, а теперь знаю и то и то , благодаря этой статье
Ух, теперь я напишу то что хотел
Здравствуйте, а можно ли вытащить переменную из flash без изменения swf'ки?
Например, есть готовый swf-объект на странице, из него нужно взять переменную txtField. Если честно - нужно это сделать на чужой странице:) С хтмлом могу делать что угодно, но флэшки ни местонахождение, ни параметры, ни тем более код менять нельзя. Посоветуете?
Немного не ясно что Вы имеете в виду.
Возможность считывать динамически переменную флешки либо просто добраться до хранимого в ней значения?
То есть интересует Вас контент переменной или возможность скажем подгребать ее значение тем же джаваскриптом например?
Например можно попробовать следующее:
1. Создаем новый флеш проэкт.
2. Создаем там загрузчик и загружем в него интересующую нас флешку.
3. обходим в циклах все уровни загруженной флешки и выводим все переменные и их значения. Находим нужную и путь к ней.
4. В исходном проэкте создаем функцию которая считывает конкретно нужную нам переменную в нужное время, либо подписываемся на ее изменение.
5. Выводим полученное значение в куда нам уже нужно, в тот же самый джаваскрипт.
6. Получаем новую флешку, которая все что делает это загружает в себя нужную нам, вытаскивает из нее значение переменной и отправляет его дальше.
Спасибо! Сегодня целий день в нете рисчил - один спам нашел, а здесь все четко и ясно. Thanks =)
Статья супер, но у меня очень смешная ситуация: Сделал как все сказали, вызываю js функцию через ExternalInterface, ни в одном браузере не работает... НО!!! Представьте себе работает в лисе в IE TAB (мож кто не знает это плагин к лисе такой, он отображает страницу как это делает IE), в самом IE НЕ пашет а в лисе в IE TAB пашет!!!
Че за фигня?....
если кто знает что делать, напишите плз. очень надо на: code_master@mail.ru
p.s. Спасибо за ОТЛИЧНУЮ СТАТЬЮ!!!
Виноват, извиняюсь, тестировал на локальном компе, поэтому и пахало, вылил на удаленный сервер, все заработало
СУПЕР просто! всё понятно... мне очень помогло!!!!!
Здравствуйте. Не могли бы Вы сами сохранить файл example.fla из
Демка приема-передачи через ExternalInterface
чтобы он открывался в Flash 8, т.к. у меня да и у многих пользователей, я думаю, нет возможности найти старший плеер...
Вы можете легко получить плеер самой последней версии здесь: http://get.adobe.com/flashplayer/
ExternalInterface
К сожалению, начиная с Flash 8, где он впервые появился, в ExternalInterface нашли большое количество разнообразных багов. Глюки сериализации, самопроизвольное изменение передаваемых данных и т.п.
Эти ошибки поправлены в новейших версиях Flash Player, но многие продолжают использовать более старые редакции Flash 8,9
Всвязи с этим вопрос... Здесь имеется ввиду версия самого плеера, или компилятора (ПО в котором создавался FLA, затем SWF файл)?
Имеется в виду версия самого плеера.
Огромное спасибо за статью.
Четко и в полной мере. Почаще бы такие подсказки попадались!
Огромное спасибо, просто блеск!
описанный пример работает в IE, но запустить его в OPERA не получилось. Броузер просто не видит объект. То есть не работает ссылка ни window["objectname"] ни document["objectname"]. Кто нибудь может указать в каком направлении копать?
Opera, случайно, не под Linux ?
Opera 9.51 под winXP AC 3.6.0
Материал супер , но не подскажете как изменить функцыю
function getMovie() {
var M$ = navigator.appName.indexOf("Microsoft")!=-1
return (M$ ? window : document)["BridgeMovie"]
}
чтоб она работала с неопределеным именем ролика на пример getMovie(movie);
где movie это переменая
?
+стопитьсот
позволит выполнить код в кадре "kadr" вместо того, что бы крутить
if (message!==null){ ... }
Причём кадр этот может лежать в отдельной сцене, где первы кадр содержит
stop();
а второй "kadr" - обработчик на приход данных и данные будут обработаны незамедлительно.
день добрый
можете подсказать
я вставлю невидимый флеш
из Javascript передам значение во Flash
а из флешевского callbacka вызову функцию Javascript
эта функция отработает нормально ?
А зачем так извращаться? Если флеш невидим, то какова его функция в этой цепочке? Пример из жизни можна?
Пример из жизни - процессор звуковых сигналов для вэб месенджера.
Автору статьи РЕСПЕКТ!!!
Спасибо за статью!
Однако столкнулся с одной проблемой - использую ExternalInterface, скрипт работает только в том случае, если его прописать в первом кадре. Мне это не удобно, т.к. в первых кадрах расположен загрузчик, а данные загружаются из ХМЛя посже. Точнее, мне бы хотелось прописать экшн к кнопкам внутри мувиклипов (в первом кадре я еще не знаю их путей). Как можно это решить?
АС2, инклюд в первод кадре естественно.
Столкнулся с проблемой такого характера:
Хотел сделать чтоб при просматривании видео посетитель нажимал на проиграть ролик (на flv player-е) и при этом чтоб выскакивала реклама.
Помогите как это организовать?
ребят подскажите пожалуйста, а как должен выглядеть еод для файла .swf
Подскажите, пожалуйста:
Есть флеш объект, получив задание он отправляет его на сервер, после обработки задания сервер присылает флеш-объекту результат и тот выдаёт текст с результатом. Текст можно копировать и т.п.
Как можно перехватить текст результата от сервера (или прямо из флешобъекта) чтобы оперировать им.
Извиняюсь за нубский вопрос, но как мне остановить/проиграть flash'ку с помощью javascript?
Вопрос снят.
Решение:
Воспризвести: document.getElementById(obj).Play();
Остановить: document.getElementById(obj).StopPlay();
где obj - это id контейнера, при использовании динамеческого swfobject.
Источник: http://www.belonogov.ru/wrote/texts/fscommander/
Превосходно! Великолепно) Думал придется долго искать и думать, а решение быстро нашлось, спасибо за статью)
в 10 флеше юзаю экстернал интерфейс
багов не вижу пока. наверно в 10 уже исправлено в отличие от 8 про который афтор говорит
так вопрос, возможно ли с помощью джаваскрипта отследить окончание флеш-ролика(с того же ютюба или рютюба)... то есть задача состоит в том, что бы после того как ролик закончится нужно переадресовать на определенную страницу...
Так ты в самом swf переадресацию сделай по окончании ролика.
Сложность состоит в том, что это не мой ролик.. и в самом ролике я изменить ничего не могу... можно как-то узнать с помощью джаваскрипта какие объекты находятся внутри ролика(под-ролики), ихние названия?? или определить что с роликом не происходит никаких изменений...?? или может есть еще какие-то идеи...
код самого ролика выглядит пока:
<object width="480" height="385" id="movie">
<param name="movie" value="http://www.youtube.com/v/ZTq3pi5Vd2Q?fs=1&hl=ru_RU"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed swLiveConnect=true id="movie" name="movie" src="http://www.youtube.com/v/ZTq3pi5Vd2Q?fs=1&hl=ru_RU" type="application/x-shockwave-flash"
allowscriptaccess="always" allowfullscreen="true" width="480" height="385">
</embed>
</object>
идея, в том что-бы после окончания ролика... загрузилась следующая страница... на которой ролик начал свое воспроизведение...
из верхнего js поля во flash поле значения не передавались у меня.
У меня трабл, когда пытаюсь вызывать AS метод через ExternalInterface.
Когда я вызываю document.swfMovie.funcName(...), у меня выскакивает исключение "Error calling method on NPObject!". Порылся в сети - не нашел решения. Говорят только что на удаленном сервере все начинает работать. Попробовал залить - тоже самое. Причем та флешка что вы тут дали в пример - принимает все замечательно. В чем же может быть проблема? Помогите плиз..
Есть ли возможность в чужой флэш игре получить доступ к переменным или даже вызывать методы ?
- при таком расскладе нельзя...
С чего это, вдруг, "нельзя"?!
Для того, чтобы использовать чужой флеш, тебе требуется после загрузки клиента вставить свои яваскриптовые функции у себя на клиенте. Затем получить этот ролик, и можно оперировать переменными флеша с помощью GetVariable, SetVariable из яваскрипта.
Имена переменных смотрятся в любом флеш-дебаггере.
Problem?
Всё замечательно работает.
Спасибо автору!
За исключением пустяка. Любая попытка внедрения AC_RunActiveContent приводит к тому, что мост перестаёт работать. Так что приходится лишний раз кликать по флэшке для активации.
Может быть, есть решение?
Как с помощью JS изменить значение (или установить если его нет) quality всех флешек на странице ?
Для работы в ie 9 надо поправить функцию:
Это связано с тем, что в 9 версии window возвратит 2 объекта и ембед и обджект. http://msdn.microsoft.com/en-us/library/gg622942%28v=VS.85%29.aspx
Фич-детекшен всегда лучше, чем проверка браузера.
Долго муччался и не мог понять почему ИЕ не хочет работать с ExternalInterface.call - писал объект null, нашел в инете простое решние "realised"
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" т.е. добавил idЯ вообще-то чайник, возможно поэтому не понял из прочитанного, как решить такую задачу.
Есть swf-файл. Он содержит собственное меню, кнопок на 10. Нужно вынести это меню в JS. Страницу с меню я сделал, swf в нее вставил. Сейчас он запускается при загрузке страницы. Не пойму как с помощью ссылок html-ного меню передавать команды в swf. Как задать эти 10 переменных в JS и привязать каждую из них к конкретной к html-кнопке?
так для сведение
если флешка была создана (createElement) как embed то в IE9-10 будут проблемы с ExternalInterface.addCallback . эта бага скорее всего во флеше.
vflash, данную ошибку легко избежать, да и вообще так нужно делать.
Работу с ExternalInterface надо начинать после того, как ролик загрузился. Т. е. добавить соответствующие слушатели.
возможно кто знает решение, уже долбаюсь не первый день.. Есть swf, подключая который можно управлять сервером через методы по типу SwfName.send() SwfName.connect() etc
во всех нормальных браузерах работает на ура, IE как всегда не может без херни, он видит SwfName, более того вызывает FlashLoaded() индикатор что можно коннектиться, но не видит ни SwfName.send ни SwfName.connect, в чем может быть проблема, подскажите пожалуйста! флеш не моя стихия, сервер обычно не влияет на клиент, но может ли быть проблема в самой флеше?? или в каком направлении искать?
<object id="PCBridge" width="5" height="5">
<param name="src" value="/system/modules/SocketDaemon/html/bridge/PCBridge.swf"/>
<param name="allowScriptAccess" value="sameDomain"/>
<embed name="PCBridge" src="/system/modules/SocketDaemon/html/bridge/PCBridge.swf" allowscriptaccess="sameDomain" width="5" height="5"/>
</object>
Тоже интересует этот вопрос. Пожалуйста, ответе кто знает.
У меня из-под хрома пишет: Uncaught TypeError: Object # has no method 'SetVariable' . Соответственно, ничего не работает, данные не передаются. В то же время под фаерфокс и оперой всё гладко... В чём может быть ошибка?
Добрый день.
Коллеги, подскажите в каком направлении копать по следующей задаче.
Если сайт на котором расположены музыкальные треки. На одной странице проигрывается только один трек, это логично.
Задача: пользователь открыл несколько вкладок. На одной из них играет музыка. На другой вкладке пользователь хочет прослушать другой трэк. Как остановить проигрывание музыки в другой вкладке? ВКонтакт это как-то делает, что очень удобно.
Спасибо
Нужна очень ваша помощь, я сам новичок в javascript, у меня вот какая проблема я хочу сделать проверку на браузер, у меня проста на сайт стоит флэш интро но как мы знаем на планшетах и телеыонов нету флэша.... я по гуглил на нашел что можна сделать проверку....почитав немного java коечто написал но не знаю как законить....Короче идея в том что если в браузере есть флэш то выводится анимация, если нет то index.php!!! Help please!!!
function checkFlash() {
var flashinstalled = false;
if (navigator.plugins) {
if (navigator.plugins["Shockwave Flash"]) {
flashinstalled = true;
}
else if (navigator.plugins["Shockwave Flash 2.0"]) {
flashinstalled = true;
}
}
else if (navigator.mimeTypes) {
var x = navigator.mimeTypes['application/x-shockwave-flash'];
if (x && x.enabledPlugin) {
flashinstalled = true;
}
}
else {
flashinstalled = true;
}
return flashinstalled;
}
if (checkFlash()) {
//Если да то выводится интро
} else {
// Флэща нету, переадресация на index.php/ru
}
в flash при ие последнем ничего не шлет =(
Вроде бы разобрался с SetVariable, ролик начал слушаться команд. Но - только в IE. В FF появляется ошибка "Error calling method on NPObject", и я не понимаю ее смысла. Это что, Лиса "не знает" такого метода как SetVariable, что ли?
Спасибо, что поделились этим постом в блоге. vex 4
Спасибо, что поделились этим постом в блоге. vex 4
I am glad to see this brilliant post, all the details are very helpful and useful for us, keep up to good work. run 3
It's phenomenally a surprising and key bit of information. I'm in remarkable spirits that you in a general sense offered this baffling information to us
It's phenomenally a surprising and key bit of information. I'm in remarkable spirits that you in a general sense offered this baffling information to us
https://techofist.com/hotmail-login/
Genuinely loved this kind of post. Although I want much more information on like precious subject matter.
driving directions
outlook.com
A very nice blog, I like the way you share very honestly and interestingly, through my blog I learned a lot of things. happy wheels
I think I need a lot of information on this, thank you for sharing
wuxiaworld
Very nice website. I am practicing my English. Please forgive me if it is unreadable. Victor Gilligan
Thanks for your article! I have read through some similar topics! However, your post has given me a very special impression, unlike other posts. I hope you continue to have valuable articles like this or more to share with everyone!
This is a good and engaging topic. I enjoyed reading this article. I am waiting for new updates from you.
vin lookup
Thanks a lot for this article! Though Google is not supporting Flash anymore in the coming years. Personal Bookkeeper
Great article on how to invoke Flash methods from Javascript. Thanks for sharing this. Sterling roadside assistance & 24/7 towing services
A good website, I am happy to find useful information from you. I will keep looking for interesting things about your post. surviv io
Thanks for showing how to invoke Flash methods from Javascript. Keep coming! towing
I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept. Thank you for the post.
periodic table
Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people.
I appreciate the information you share, it helps me a lot.
The Dallas Cowboys are a Cowboys Live Game professional NFL team based in the Dallas?Fort Worth metroplex. You can Cowboys Football Live watch Dallas Cowboys game live streaming online. Get the latest Dallas Cowboys schedule, TV channel, news update here. Watch Cowboys Game Live
The Chicago Bears are a professional NFL team based in Chicago. You can watch Chicago Bears game live streaming online. Get the latest Chicago Bears schedule, TV channel, news update here.
The Chicago Bears are a Bears NFL Football Live professional NFL team based in Chicago. You can Bears NFL Game 2020 Live watch Chicago Bears game live streaming online. Get the latest Chicago Bears schedule, TV channel, news update here. Watch Bears Game Live
Monday Night Football Monday Night Football Live live stream free online. Monday Night Football Games How to watch MNF games live stream, today/tonight & Find Monday Night Football schedule, score, news update. Watch Monday Night Football Live
That was an interesting bridge between JS and Flash. I am happy that we don't have to do it anymore peintre trois rivieres
You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers. rate my company
Have a nice day! visit here: friendship quotes
Thanks for the trick, I sometime have to work with legacy applications and this kind of post save me a lot of time. lavage vitre
Out of the many articles, this is perhaps the most impressive one.
skribbl io
Wow the blog you give us is amazing, no wonder many people want to read this. https://celebrityinsider.org/
I will recomend this blog to all of my friends. Great article.
https://happygamer.com/
Thank you for this inspiring blog. I wait for more
https://ballstepded.com/
I learned so much from this blog. Good inforamtion. https://fixoserror.com/
I wait for more.Great article.
https://premiereretail.comMathias Filemonsen
I stumbled across this blog.Great article. https://tecsprint.com
Thank you for this amazing blog. Congratulations.
https://howtolose10poundsinaweek.com
The things i see here are very informative. Keep going. https://bargainistafashionista.com
I can say that is one of the best articles out on the internet. https://bankncard.com
I readed all the article. So informative https://vhan.net
This is one of the best sites i have found on the internet until now. Nice article keep going.
https://millikenconstructioninc.com/
Thanks for the information, very clear and simple. I will try to use it.Love the way you write. Working my way through your article links
https://vvhen.to/
This is one of the best articles i found on the blogs around the internet. I am really interested in seeing more of this. Keep going with the great work!
https://gzgjskpzz1m.ga
First of all ,you have picked a very unique theme . I think i might design something similar for a future project that i want to build .
On top of that ,i in truth enjoy most of your content pieces and your different point of view.
Thank you https://seoconsultants24.blogspot.com/
Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming.https://seokarma24.blogspot.com/
I have reviewed the article many times and I find it very impressive. The information is extremely useful especially the last part I care about that information very much. I have been looking for this certain information for a long time.
https://packseo.blogspot.com/
I’m gone to tell my little brother, that he should
also pay a quick visit this blog on regular basis to take updated from hottest information.
https://connectorseo.blogspot.com/
You have made some really good points there. I looked on the web to find out
more about the issue and found most individuals will go along with your views on this website
https://digitalseo24h.blogspot.com/
Fantastic blog! Do you have any helpful hints for aspiring writers?
I’m hoping to start my own site soon but I’m a little lost on everything.
https://sweetseo24h.blogspot.com/
I am hoping the same best effort from you in the future as well. In fact your creative writing skills has inspired me.
https://fancyseo24h.blogspot.com/
Pinoy SEO SErvices
Latest Pinoy SEO SErvices
News Pinoy SEO SErvices
The Latest Topics
The Community Status
You have made some really good points there. I looked on the web to find out
more about the issue and found most individuals will go along with your views on this website
https://phoenixseogeek.com/
Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming.
https://zgjskpzz1m.ga/
The Badr vs. Benny fight was initially expected to take place at the Ahoy Arena in Rotterdam, Holland in June, serving as the headliner of https://badrvsbennys.com/badr-hari-vs-benjamin-adegbuyi-new-fight-date-s...
UFC 254: Khabib vs. Gaethje is an upcoming mixed martial arts event produced by the Ultimate Fighting Championship that will take place on October 24, 2020 https://howtowatchufcfight.com/
I can set up my new idea from this post. It gives in depth information. Thanks for this valuable information for all,..
ที่เที่ยวพังงา
The Chicago Bears https://chicagobearsgame.com/ are a professional NFL team based in Chicago. You can watch Chicago Bears game live streaming online. Get the latest Chicago Bears schedule, TV channel, news update here.
Some genuinely interesting information, well written and broadly user pleasant 먹튀검증사이트
On this subject internet page, you'll see my best information, be sure to look over this level of detail. 개인대출
Hello ! I am a student writing a report on the subject of your post.Your article is an article with all the content and topics. I've ever wanted 안전한놀이터 . Thanks to this, it will be of great help to the report I am preparing now.Thanks for your hard work. And if you have time, please visit my site as well. The site name is 안전놀이터.
What a post I've been looking for! I'm very happy to finally read this post about 안전놀이터. Thank you very much. Your post was a great help to me. If you are interested in the column I wrote, I would appreciate it if you visit my site 메이저놀이터.
What a post I've been looking for! I'm very happy to finally read this post about 안전놀이터. Thank you very much. Your post was a great help to me. If you are interested in the column I wrote, I would appreciate it if you visit my site 메이저놀이터.
We are looking for a lot of data on this item. In the meantime, this is the perfect article I was looking for 토토커뮤니티. Please post a lot about items related to 안전놀이터!!! I am waiting for your article. And when you are having difficulty writing articles, I think you can get a lot of help by visiting my 토토커뮤니티사이트.
Hello, my name is and I live in 안전놀이터. I read your article well. It was really impressive to me. It was an article that could inspire me with different nationalities.Inspired by your article, I am writing articles about 토토커뮤니티. If you want to check my article, please come to my site 토토커뮤니티사이트 and check it out!!
Your article was very impressive to me. It was unexpected information,but after reading it like this 안전놀이터, I found it very interesting.
栗原vs井上ライブファイトの見方. 栗原は1月14日(木)に井上戦でOPBFバンタム級タイトルを守るためにリングに戻る。試合は午前12時から始まる。 ET。
This is highly information, crisp and clear. You have a way of writing compelling information that sparks much interest.
https://larkenequity.com/ https://larkenequity.com//
and services
Wow very good post, please dont stop posting things like this because ie really enjoy this
https://hrma-llc.com/
https://hrma-llc.com/
You are a very persuasive writer. I can see this in your article. You have a way of writing compelling information that sparks much interest.
https://nuestropsicologoenmadrid.com/
https://nuestropsicologoenmadrid.com/
I wish more authors of this type of content Wow.!This is highly information, crisp and clear. You have a way of writing compelling information that sparks much interest.!!!
https://cremationconsultancy.com/ https://cremationconsultancy.com//
This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post!
https://i-repaircenter.nl/
https://i-repaircenter.nl/
I really thank you for the valuable info on this great subject and look forward to more great posts. Thanks a lot for enjoying this beauty article with me.
https://zoekmachineservices.nl/
https://zoekmachineservices.nl/
I do not know what to say really what you share very well and useful to the community, I feel that it makes our community much more developed
https://hetonderdelenhuis-emmen.nl/ https://hetonderdelenhuis-emmen.nl/
This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post!
https://casinoonline-bet.com/
https://casinoonline-bet.com/
Great post! I am actually getting ready to across this information, is very helpful my friend. Also great blog here with all of the valuable information you have. Keep up the good work you are doing here
https://restorationdoctorva.com/
https://restorationdoctorva.com/
You are a very persuasive writer. I can see this in your article. You have a way of writing compelling information that sparks much interest.
https://fixoserror.com/
https://fixoserror.com/
Wow very good post, please dont stop posting things like this because ie really enjoy this
https://vvhen.to/
https://vvhen.to/
You are a very persuasive writer. I can see this in your article. You have a way of writing compelling information that sparks much interest.
https://millikenconstructioninc.com/
https://millikenconstructioninc.com/
Badr vs Benny Live Stream will occur on December 19, 2020, in an undisclosed studio in Rotterdam, Netherlands.
You are a very persuasive writer. I can see this in your article. You have a way of writing compelling information that sparks much interest.
https://findcosmeticsurgeons.net/
https://findcosmeticsurgeons.net/
I high appreciate this post. It’s hard to find the good from the bad sometimes, but I think you’ve nailed it!
https://safetytechnology.com
https://safetytechnology.com
I loved your post so much I became a fan of you, promise that you will continue to share such good and knowledgeable posts even further, we will be waiting for your post thank you.
https://bestpestcontrolservices.com.au
https://bestpestcontrolservices.com.au
It is wonderful to be here with everyone, I have a lot of knowledge from what you share, to say thank you, the information and knowledge here helps me a lot
https://bankncard.com/
https://bankncard.com/
Thank you so much for sharing this great blog.Very inspiring and helpful too.Hope you continue to share more of your ideas.I will definitely love to read.
https://bargainistafashionista.com/
https://bargainistafashionista.com/
Your information was very useful to me. That's exactly what I've been looking for
https://howtolose10poundsinaweek.com/
https://howtolose10poundsinaweek.com/
This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post.!
https://tecsprint.com/
https://tecsprint.com/
Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking.
https://premiereretail.com/
https://premiereretail.com/
The post is written in very a good manner and it contains many useful information for me.
https://happygamer.com/
https://happygamer.com/
Now with coronavirus is really interesting to read things liek this on the internet when you stay at home
https://closetsphoenix.com/
https://closetsphoenix.com/
Wow very good post, please dont stop posting things like this because ie really enjoy this
https://caboplatinum.com/
https://caboplatinum.com/
Thank you so much for sharing this great blog.Very inspiring and helpful too.Hope you continue to share more of your ideas.I will definitely love to read.
https://zacjohnson.com/
https://zacjohnson.com/
Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking.
https://blogreign.com/
https://blogreign.com/
The post is written in very a good manner and it contains many useful information for me.
https://blogging.org/
https:https://blogging.org/
Very inspiring and helpful
https://blogninja.com/
https://blogninja.com/
This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post.!
https://phoenixseogeek.com/
https://phoenixseogeek.com/
Thank you for such a well written article. It’s full of insightful information and entertaining descriptions. Your point of view is the best among many.
https://extremevaporizers.com/
https://extremevaporizers.com/
this is really nice to read..informative post is very good to read..thanks a lot!
https://usemybee.com/
https://usemybee.com/
I can set up my new idea from this post. It gives in depth information. Thanks for this valuable information for all,..
maison intelligente
I think this is one of the most significant information for me. And i’m glad reading your article. But should remark on some general things, The web site style is perfect, the articles is really great : D. Good job, cheers
デジタルノマド
Now with coronavirus is really interesting to read things liek this on the internet when you stay at home
https://spacnetwork.com/
https://spacnetwork.com/
Want to watch the Adult video news and adult awards show? Here know How to watch the AVN awards 2021 live streaming online. Date, time
Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..
abonnenten24
I'm glad I found this web site, I couldn't find any knowledge on this matter prior to.Also operate a site and if you are ever interested in doing some visitor writing for me if possible feel free to let me know, i am always look for people to check out my web site.
automação doméstica
Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!
digital marketing
Very interesting discussion glad that I came across such informative post. Keep up the good work friend
https://pestcontrolcanberraarea.com.au
https://pestcontrolcanberraarea.com.au
I do not know what to say really what you share very well and useful to the community, I feel that it makes our community much more developed
https:https://emergencydental247.com/ https://emergencydental247.com/o/
It’s hard to find the good from the bad sometimes, but I think you’ve nailed it!
audigitalsolutions.com
audigitalsolutions.com
Great website and the content you shared is very informational and useful.
https://microjobs24.de https://microjobs24.de
I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business.
hartlepool removals
Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic.
alquiler carros santa marta
Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..
tree surgeon colchester
Great write-up, I am a big believer in commenting on blogs to inform the blog writers know that they’ve added something worthwhile to the world wide web!..
Hausautomation
It is wonderful to be here with everyone, I have a lot of knowledge from what you share, to say thank you, the information and https://audigitalsolutions.com/
https://audigitalsolutions.com/
I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business.
coronavirus playa del carmen
Now with coronavirus is really interesting to read things liek this on the internet when you stay at home
https://plasticpalletsales.com
https://plasticpalletsales.com
I have bookmarked your blog, the articles are way better than other similar blogs.. thanks for a great blog!
https://megabonuscasino.nl/
https://megabonuscasino.nl/
I do not know what to say really what you share very well and useful to the community, I feel that it makes our community much more developed
https://vosairservices.com/
https://vosairservices.com/
Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking.
https://entutorado.com/
https://entutorado.com/
This is a great article thanks for sharing this informative information. I will visit your blog regularly for some latest post.
best restaurants in cozumel
This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog..
خانه هوشمند
I really loved reading your blog. It was very well authored and easy to undertand. Unlike additional blogs I have read which are really not tht good. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he ejoyed it as well!
covid playa del carmen
Hey there, You have done a fantastic job. I will definitely digg it and personally recommend to my friends. I am confident they'll be benefited from this website.
https://atlanticflagpole.com
https://atlanticflagpole.com
I appreciate, lead to I found just what I used to be taking a look for. You've ended my four day lengthy hunt! God Bless you man. Have a nice day. Bye
https://gold4vanilla.com/
https://gold4vanilla.com/
Thanks for taking the time to discuss this, I feel strongly that love and read more on this topic. If possible, such as gain knowledge, would you mind updating your blog with additional information? It is very useful for me.
okos ügyvéd Debrecen
It's too bad to check your article late. I wonder what it would be if we met a little faster. I want to exchange a little more, but please visit my site 바카라사이트 and leave a message!!
It is appropriate time to make a few plans for the future and it's time to be happy. I've learn this publish and if I may just I want to counsel you some attention-grabbing things or tips. Maybe you could write subsequent articles regarding this article. I wish to learn even more issues approximately it!
https://schmidtchristmasmarket.com/
https://schmidtchristmasmarket.com/
Attractive component of content. I just stumbled upon your weblog and in accession capital to say that I acquire actually enjoyed account your weblog posts. Any way I will be subscribing in your feeds or even I achievement you get admission to consistently fast.
https://whispersandhoney.com/
https://whispersandhoney.com/
I have not any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us.
otomatisasi rumah
As I am looking at your writing, 먹튀검증 I regret being unable to do outdoor activities due to Corona 19, and I miss my old daily life. If you also miss the daily life of those days, would you please visit my site once? My site is a site where I post about photos and daily life when I was free.
Great write-up, I am a big believer in commenting on blogs to inform the blog writers know that they’ve added something worthwhile to the world wide web!..
meghatározó pályázatírás Debrecen
Thanks for your nice post I really like it and appreciate it. My work is about Custom Packaging Solution. If you need perfect quality boxes then you can visit our website.
Interesting post. I Have Been wondering about this issue, so thanks for posting. Pretty cool post.It 's really very nice and Useful post.Thanks
playa del carmen to tulum
Hi I am so delighted I found your webpage, I really found you by mistake, while I was browsing on Bing for something else, Anyhow I am here now and would just like to say many thanks for a remarkable post and a all round enjoyable blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have bookmarked it and also included your RSS feeds, so when I have time I will be back to read much more, Please do keep up the excellent work.
https://eureka-examens.nl/
https://eureka-examens.nl/
Hello, i believe that i noticed you visited my weblog so i came to return the favor?.I'm attempting to in finding issues to improve my web site!I suppose its adequate to make use of some of your ideas!!
https://cbtresultaatuitopleiden.nl/
https://cbtresultaatuitopleiden.nl/
I was looking for another article by chance and found your article온라인포커 I am writing on this topic, so I think it will help a lot. I leave my blog address below. Please visit once.
The assignment submission period was over and I was nervous, 온라인포커 and I am very happy to see your post just in time and it was a great help. Thank you ! Leave your blog address below. Please visit me anytime.
My curiosity was solved by looking at your writing. Your writing was helpful to me.온라인바둑이I want to help you too.
I am very impressed with your writing온라인포커 I couldn't think of this, but it's amazing! I wrote several posts similar to this one, but please come and see!
Wonderful illustrated information. I thank you about that. No doubt it will be very useful for my future projects. Would like to see some other posts on the same subject!
treatnheal
That's so nice.먹튀검증I want you to see if it's this good.
Great write-up, I am a big believer in commenting on blogs to inform the blog writers know that they’ve added something worthwhile to the world wide web!..
bathroom vanity
I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business.
coronavirus cozumel
I really enjoyed reading this post, big fan. Keep up the good work and please tell me when can you publish more articles or where can I read more on the subject?
taroko gorge day trip
I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post.
Mediterranean food catering
Your information was very useful to me. That's exactly what I've been looking for 카지노사이트!
Hello, I am one of the most impressed people in your article. 토토커뮤니티 I'm very curious about how you write such a good article. Are you an expert on this subject? I think so. Thank you again for allowing me to read these posts, and have a nice day today. Thank you.
I like the content, it is very useful and good since one can always learn with the best of the season calzado andrea
Wonderful article, thanks for putting this together! This is obviously one great post. Thanks for the valuable information and insights you have so provided here.
RC car tips
What a post I've been looking for! I'm very happy to finally read this post. 바둑이사이트 Thank you very much. Can I refer to your post on my website? Your post touched me a lot and helped me a lot. If you have any questions, please visit my site and read what kind of posts I am posting. I am sure it will be interesting.
Thank you so much for providing good quality information. 먹튀검증업체 I think it would not have been easy to collect this information and organize it in an easy to understand way. I'll add it to my bookmarks so I can visit it often! And I will share it with my acquaintances. And there is a lot of useful information on our website too, so please take a look and take a look. Then have a good day. 먹튀검증업체
Thanks for your information, it was really very helpfull..
cozumel diving
Очень полезно спасибо
I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.
zip codes us
my website for more information
my website
I gotta favorite this website it seems very helpful .
Marshall Media production
Спасибо за эту технику sterlingtowtruck.com
Thanks so much for this information. I have to let you know I concur on several of the points you make here and others may require some further review, but I can see your viewpoint.
what is ESG investment
It's the same topic, but I was surprised that it was so different from my opinion. I hope you feel the same after seeing the writings I have written. 토토사이트
I love the this Drift Hunters. Its such good energy.
hello!! Very interesting discussion glad that I came across such informative post. Keep up the good work friend. Glad to be part of your net community.
This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post.!
Boudoir photoshoot in Delhi
Nice blog and absolutely outstanding. You can do something much better but i still say this perfect.Keep trying for the best.
Top Interior Designer in Bangalore
clinic
bmw 7 series
711
best firms
racq car
tsg
hybrid gold coast
Wonderful article, thanks for putting this together! This is obviously one great post. Thanks for the valuable information and insights you have so provided here.
Job Application Letter
Great content material and great layout. Your website deserves all of the positive feedback it’s been getting.
tulum resorts
I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post.
롤듀오
I really loved reading your blog. It was very well authored and easy to undertand. Unlike additional blogs I have read which are really not tht good. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he ejoyed it as well!
구글상위노출
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.