Actionscript 3 Связь с JavaScript: у объекта # <HTMLEmbedElement>нет метода - PullRequest
2 голосов
/ 23 июня 2011

Я пытаюсь вызвать метод Actionscript 3 из Javascript, но Chromes выдает ошибку ниже:

У объекта # нет метода

Я положилмой SWF на страницу, как показано ниже:

<embed type="application/x-shockwave-flash" src="/subfolder/flash.swf" width="550" height="400" id="myFlash" name="myFlash" bgcolor="#FFFFFF" quality="high" />

Actionscript 3 Code:

function query(fn:String, ln:String):void {
    a_txt.text = fn + " " + ln;
}
ExternalInterface.addCallback("queryFlash", query);

И, наконец, Javascript:

function getFlashMovie(movieName) {
      var isIE = navigator.appName.indexOf("Microsoft") != -1;
      return (isIE) ? window[movieName] : document[movieName];
    }
$(document).ready(function() {
    getFlashMovie("myFlash").queryFlash("a", "b");
});

Я что-то здесь упускаю?

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

jQuery ready() соответствует событию DOMContentLoaded. Это означает, что HTML-страница закончила загрузку, и вы можете получить доступ к DOM - но это не гарантирует, что все встроенные изображения и объекты закончили загрузку. Так что ваш Flash, вероятно, просто еще не загрузился. Вместо этого вы должны прослушать событие load окна.

0 голосов
/ 20 января 2012

Даже если это может не решить вашу проблему, у меня была похожая проблема с Chrome.

Исправление должно было заменить

document.getElementById('flash').sendToActionscript('test');

на

((function(){return document.getElementById('flash');})()).sendToActionscript('test');

Если атрибут id объекта embed / object был flash, а функция, вызываемая внутри flash, была sendToActionScript

, я понятия не имею, почему это работает.

Edit

Это не всегда работает.Я обнаружил, что создание объекта с использованием swfobject , кажется, всегда работает для меня.

...