Внешний интерфейс в Chrome

Я хотел бы вызвать функцию js через ExternalInterface из кода as3 ЛОКАЛЬНО, а не на удаленном сервере. Все браузеры работают отлично, но не Chrome. Обратите внимание, что в версии проигрывателя flash-debug (C: \ Windows \ system32 \ Macromed \ Flash \ NPSWF32_11_9_900_170.dll, версия 11,9,900,170) я установил в Chrome, он работает. Но в версии флеш-плеера по умолчанию (C: \ Program Files \ Google \ Chrome \ Application \ 33.0.1750.117 \ PepperFlash \ pepflashplayer.dll, версия 12.0.0.70) он не работает.

PS: Я также попытался открыть свой старый проект (с ExternalInterface), который я разработал 2 года назад -> та же проблема.

Я использовал IDE -> FlashBuilder4.6, а также пробовал в FlashDevelop. Я использую AC_OETags.js, чтобы включить swf в веб-страницу.

ExternalInterface.call ("someFunc", "testMsg") вызывается при инициализации swf.

Версия Chrome - 33.0.1750.117 м

Заранее спасибо.


person stryker    schedule 03.03.2014    source источник


Ответы (2)


Это ошибка в Chrome с использованием плагина перца: https://code.google.com/p/chromium/issues/detail?id=137734

Что происходит, так это то, что надежные местоположения (установленные здесь: https://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html) не учитываются, поэтому любое взаимодействие Flash ‹-> JS нарушается.

Не похоже, что эту ошибку исправляют (судя по сегодняшним комментариям к проблеме, есть большая вероятность, что она будет помечена как «Не исправлю»), поэтому на данный момент есть 3 способа обойти ее:

  • Использовать другой браузер - не идеально
  • Используйте подключаемый модуль NPAPI - подключаемый модуль перца используется по умолчанию, но в основном это задача типа «установил один раз и забыл».
  • Запустите локальный веб-сервер - например, apache (http://www.easyphp.org/) или узел ( http://nodejs.org/). Это предпочтительный метод Google для решения этой проблемы, так как он более точно имитирует поведение сети (включая меры безопасности).
person divillysausages    schedule 03.03.2014
comment
Это скорее «установил один раз и забыл до конца этого года, когда поддержка NPAPI будет удалена и она перестанет работать снова»; это не долгосрочное решение. - person smorgan; 05.03.2014

Этот код поможет вам проверить, установлен ли PepperPlayer:

checkPepperPlayer=function(){
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    if (is_chrome) {
        var pluginsList = navigator.plugins;
        for (var plugin in pluginsList) {
            if (plugin && pluginsList[plugin] && pluginsList[plugin].filename) {
                var filename = pluginsList[plugin].filename;
                if (filename == "pepflashplayer.dll" || filename == "PepperFlashPlayer.plugin" || filename == "libpepflashplayer.so") {
                    return true;
                }
            }
        }
    }
    return false;
};
person Community    schedule 13.03.2014