ExternalInterface返回AS3在IE中不能一致地工作

时间:2014-10-28 15:15:53

标签: javascript actionscript-3 flash externalinterface

所以,我在从ExternalInterface调用返回值时遇到了一些麻烦。我有一段看起来像这样的代码:

var a:String = String(ExternalInterface.call("function() { var returnTest = 'test'; alert(returnTest); return returnTest;}"));
ExternalInterface.call("alert", a);

第一个警报(在第1行的匿名函数中)是正确的(显然)。但是,第2行的警报在IE10中返回90%的空值。它在Firefox中每次都可以使用。

为了进一步解释有关90%的时间工作的情况,似乎我可以通过添加或删除看似毫无意义的警报再次掷骰子。例如:假设它不起作用,我可以添加一个警报,它将开始工作。或者,说它正在工作,我可以添加一个警报调试,它停止工作,删除警报,仍然无法正常工作,添加警报,然后它再次开始工作。我知道这不是正在发生的事情,但它的行为就像每次添加或删除警报时硬币被翻转一样。

这一切都只发生在IE中,每次都在Firefox中运行得很好。

感谢。

编辑: 我提供的代码不是需要工作的实际代码,而是我编写的代码,用于验证问题所在。实际情况是我们需要知道运行Flash的环境中有一个JavaScript属性,但是我们无法访问SWF将运行的HTML或JavaScript。我需要运行的实际代码看起来更像这样:

var pageNameFromJS:String = String(ExternalInterface.call("function() { var pageName = ServerObject.currentPage.name; alert(pageName); return pageName;}"));
ExternalInterface.call("alert", pageNameFromJS);

第一行中的警报只是为了确保ServerObject.currentPage.name可以正常工作。第二行中的警报是当我们注意到需要pageNameFromJS的函数不起作用时添加的调试代码。

1 个答案:

答案 0 :(得分:0)

真的我不知道你为什么会这样复杂化;)

你可以更轻松地做到:

AS3代码:

ExternalInterface.addCallback("flash_function", flash_function);

function flash_function(from_js_param){
    trace('param received from js : '+from_js_param)
}

ExternalInterface.call("js_function", to_js_param)

JS代码:

function js_function(from_flash_param){
    var to_flash_param = 'I received your '+from_flash_param;
    (get_your_swf).flash_function(to_flash_param);
}