Ошибка при использовании Flash ExternalInterface - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь передать данные из Flash в Javascript через ExternalInterface.Он отлично работает, когда я тестирую на своем локальном хосте, но когда я пытался настроить веб-сайт в IIS, чтобы мои коллеги могли протестировать мое приложение, например: http://192.168.0.10/MyApp, Я получаю эту ошибку:

Ошибка вызова метода для NPObject.

После прочтения некоторых вопросов в Stackoverflow я попытался установить allowScriptAccess="always" в моих тегах встраивания и Security.allowDomain(*) в моем AS-файле, но все равно этого не происходит.работа.

Я использую SWF-объект , если это имеет значение.

Что мне не хватает?

РЕДАКТИРОВАТЬ :ошибка возникает при попытке вызвать метод из js к моему swf .Этот код адаптирован к ответу ниже.

var swfReady = false;
swfobject.embedSWF("swf/1.swf", "flashContent", "300", "250", "11", "expressInstall.swf", null, { allowScriptAccess: "always" } , null, function (e) {
    if (e.success) {
         setTimeout(function () {
              swfReady = true;
         }, 150);
    }
});

btnConfig.on('click', function () {

    if (swfReady) {
         flashContent.myMethod();
    } else {
         alert("Hold on...");
    }

});

Это прекрасно работает на localhost , но когда кто-то пытается просмотреть ту же страницу через мой IP, я получаю ошибку Javascript Error calling method on NPObject.

1 Ответ

1 голос
/ 20 декабря 2011

Иногда это происходит, когда SWF не готов. Вы можете попробовать функцию обратного вызова в embedSWF. Не вызывайте метод swf до этого обратного вызова. В дополнение к этому иногда вам потребуется задержка в несколько миллисекунд.

swfobject.embedSWF("sample.swf", "swfdiv", "400", "300", "9.0.0", "expressInstall.swf", null, null, null, function (e) {
    if (e.success) {
        console.log("swf ready ");
        setTimeout(function(){
            // call swf method here
        }, 150);
    } else {
        console.log("embedding failed");
    }
});
...