2

我想從as3代碼LOCALLY通過ExternalInterface調用js函數,而不是在遠程服務器上。 所有的瀏覽器都很好,但不是Chrome。 請注意,在閃存調試播放器版本(C:\ Windows \ system32 \ Macromed \ Flash \ NPSWF32_11_9_900_170.dll,版本號11,9,900,170)中,我已經在Chrome中安裝了它的工作原理。 但是在默認的Flash播放器版本中(C:\ Program Files \ Google \ Chrome \ Application \ 33.0.1750.117 \ PepperFlash \ pepflashplayer.dll,版本12.0.0.70)不起作用。 PS:我也試圖打開我2年前開發的舊項目(使用ExternalInterface) - >同樣的問題。Chrome中的ExternalInterface

IDE我已經使用過 - > FlashBuilder4.6,也試過在FlashDevelop中。 我正在使用AC_OETags.js以將swf包含到網頁中。

當swf初始化時ExternalInterface.call(「someFunc」,「testMsg」)調用。

Chrome版本是33.0.1750.117 m

在此先感謝。

回答

4

這是使用胡椒插件在瀏覽器的錯誤:https://code.google.com/p/chromium/issues/detail?id=137734

發生了什麼事是,受信任位置(在這裏設置:https://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html)都沒有考慮到,所以任何Flash < - > JS交互中斷。

它看起來並不像這個錯誤得到修復(根據今天的問題評論,很有可能它會被標記爲「無法修復」),所以目前有三種方法周圍:

  • 使用其他瀏覽器 - 不理想
  • 使用NPAPI插件 - 辣椒插件是默認的,但它主要是設置一次和忘記排序任務的
  • 運行本地網絡服務器 - 或者像apache(http://www.easyphp.org/)或節點(http://nodejs.org/)。這是谷歌的首選這種處理的方法,因爲它更接近地模仿網絡行爲(包括安全的東西)
+2

這一套,再一次 - 和忘記,直到-後,這年的時候,NPAPI支持 - 被移除的,和它 - 停止 - 工作 - 試;這不是一個長期的解決方案。 – smorgan

1

此代碼可以幫助你檢查是否安裝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; 
};