1

Я пытаюсь получить JS на веб-странице Wordpress и Flash-ролике ActionScript 2, чтобы поговорить друг с другом. Попытка терпит неудачу. При каждой попытке вызвать функцию, для которой я установил обратный вызов, я получаю «..... не функция» в консоли ошибок браузера (я использую Firefox 20).ExternalInterface addCallback многократно не работает

Вот как все настроено:

страница немного необычно, будучи Wordpress страница с встроенным JavaScript. Главный javascript - это блок кода jQuery.ready(), который загружает объект Flash (это делается для того, чтобы параметры GET в URL-адресе могли быть переданы во флэш-память). После того, как он загружен, есть связь с этим:

<a href="javascript:jQuery('#fmap')[0].setRegion('regiona');">Region A</a> 

Между тем, объект вспышки имеет это в нем, чтобы сделать это возможным:

import flash.external.ExternalInterface; 
System.security.allowDomain("thisdomain.com"); // the domain on which the flash is hosted 
ExternalInterface.addCallback("setRegion", null, switchZone); //switchZone is the function's internal name 

контейнера срабатывания вспышки имеет AllowScriptAccess установлено на «всегда», и Я могу подтвердить, что инструкция jQuery попадает в нужную цель. Однако, когда объект Flash отлаживается, addCallback возвращает false - знак, что он не работает. У кого-нибудь есть идеи, что может произойти?

ответ

0

ОК, понял. Во-первых, объявление функции должно быть выше бит ExternalInterface.addCallback. Кроме того, как только это было сделано, он начал бросать другую ошибку, поэтому мне пришлось создать новую функцию ... спасибо за вашу помощь.

1

Я встретил этот вид проблемы раньше. Чтобы объяснить это, вы можете просто изобразить свой флеш-файл как образ. Обычно изображение на вашей странице будет отображаться после загрузки всей страницы. Для вашего флеш-файла в событии $ .ready Flash DOM вставлен на вашу страницу, но содержимое его загружается, а среда его еще не готова.

Чтобы справиться с этим, необходимо зарегистрировать функцию обратного вызова на странице, как это:

window.ping = function() { 
    $('#fmap')[0].setRegion('regiona'); 
} 

Затем в флэш-среде, вызовите пинг() зарегистрированное.

Порядок вызова функции является ключевым моментом здесь.

+0

Я просто настроил обратный вызов, который при вызове с карты привязывает функцию к HTML-ссылке. Тем не менее, нажатие на ссылку по-прежнему дает ту же ошибку. – SoItBegins

+0

ОК, выяснилось, что обратный вызов никогда не был правильно настроен во Flash. Спасибо за вашу помощь! – SoItBegins

Смежные вопросы