Здесь проблема: у меня есть Flash-ролик, который будет встроен в страницу с использованием неизвестного идентификатора DOM, который я хочу, чтобы иметь возможность идентифицировать/хранить для обратного вызова в JS-функции.
Мой идеальный поток пользователей:
- Пользователь нажимает кнопку во Flash.
- Flash приостанавливает любые анимации/видео/звуки и т.д.
- Flash вызывает введенную JS-функцию, чтобы отобразить наложение оверлей на странице.
- Когда пользователь закрывает опыт наложения, вызывается метод обратного вызова для объекта Flash.
- Flash возобновляет воспроизведение.
Проблема заключается в том, что когда AS3 использует метод ExternalInterface.call( "functionName", args...), похоже, что событие DOM не срабатывает, и, следовательно, невозможно определить, какой объект называется JS функция, поэтому наличие функции registerMe() не работает. В принципе, введенная JS-функция не может определить, какой объект DOM вызывать, поскольку идентификатор объекта Flash неизвестен.
[ОБНОВЛЕНИЕ] Оказывается, SWF может определить свой собственный url, используя loaderInfo.url. Я передаю эту информацию в script, которая запускает опыт наложения, поэтому его можно сохранить для будущего сравнения со всеми объектами DOM приложения /x -shockwave-flash. Когда совпадение найдено, это вызывающий SWF. Кто-нибудь видит недостаток в этой логике? (Я не так хорошо разбираюсь в JS, как я с AS)