FireFox и флеш-расширения у меня проблема с externalInterface ( - PullRequest
1 голос
/ 19 апреля 2011

как я могу общаться с моим флэш-приложением?я загружаю в свою флешку расширения что-то вроде этого

myDiv.innerHTML = <object…><param allowScriptAsses… etc … 
flash load fine !!! now, i trace my externalInterface method 
var flashObject = document.get…("myFlash")
alert(flashObject) <- okey - [embedHtmlObject … 
alert(flashObject.myExternalMethod) <- native function its okey !!! 
try excute 
flashObject.myExternalMethod() and NOTHING !!! ((( externalMEthod not invoked !!! this problem ONLY on windows 7 in fireFox ! 

на Mac OS и Firefox, я использую wrapedObject и externalInterface работают отлично!но если я пытаюсь использовать wrapedObject в системе Windows - у меня есть ошибка (((

КАК я могу правильно использовать ExternalInterface на окнах в Firefox?

1 Ответ

0 голосов
/ 27 апреля 2011

Сначала вам нужно добавить обратный вызов в ваш код ActionScript:

flash.external.ExternalInterface.addCallback("myExternalMethod", doSomething);

function doSomething():void
{
//your code
}

Если вы используете swfObject для встраивания вашего флэш-фильма, вы можете использовать swfobject.getObjectById для обнаружения вашего swfи вызовите ваши методы.

swfobject.getObjectById("myFlash").myExternalMethod();

Если вы не используете swfObject, просто скопируйте и вставьте метод getObjectById в свой код JS:

function getObjectById(objectIdStr) {
        var r = null;
        var o = getElementById(objectIdStr);
        if (o && o.nodeName == "OBJECT") {
            if (typeof o.SetVariable != UNDEF) {
                r = o;
            }
            else {
                var n = o.getElementsByTagName(OBJECT)[0];
                if (n) {
                    r = n;
                }
            }
        }
        return r;
    }

И вызовите его, выполнив:

getObjectById("myFlash").myExternalMethod();

Посмотрите на это, на самом деле я пишу небольшой пример в своем блоге: http://www.nelsond8.com/?p=515

...