所以,我在从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的函数不起作用时添加的调试代码。
答案 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);
}