2012-08-19 34 views
0

Opera(ver。12.01)中的ExternalInterface.call不執行。 我正在使用SWFObject。Opera中的ExternalInterface.call不執行

在頭節我的index.php文件:

swfobject.embedSWF("example.swf", "flash", "1", "1", "10.0.0");

JavaScript函數中體:

function ready() { 
    alert(); 
} 

代碼在ActionScript 3:

if (ExternalInterface.available) { 
    ExternalInterface.call('ready'); 
} 

在谷歌Chrome一切正常。 什麼可能導致Opera中的問題?

即使Internet Explorer 7也可以正常使用此代碼。

回答

1

當Flash第一次嘗試調用JavaScript時,JavaScript ready方法可能不可用。 Adobe文檔建議對JavaScript進行輪詢,直到獲得結果(請參見ExternalInterface.as示例here)。

你可以用類似下面的快速測試原理:

if (ExternalInterface.available) { 
    // Poll JavaScript.ready method until we get a result 
    var interval = setInterval(function() { 
     if (ExternalInterface.call('ready')) { 
      trace("JavaScript is ready"); 
      clearInterval(interval); 
     } 
    }, 50); 
} 

此外,JavaScript.alert調試是一個相當侵入性方法。嘗試使用console.log代替:

function ready() { 
    console.log("JavaScript.ready method fired"); 
} 
+0

謝謝!有用 – serg66 2012-08-20 07:29:09

0

歌劇與ExternalInterface的調用JS一邊報警功能的問題。避免調用它。