flex-iframe不能回调flex函数,不能正常加载完成问题

最近研究flex-iframe时发现源代码是在iframe的onload事件中回调了IFrame.as中的handleFrameLoad()函数来完成IFrame加载并调用之后用callIFrameFunction加入的JS函数。但是有时候发现这个又失效了,怎么都调不回handleFrameLoad函数,因此之后一直使用callIFrameFunction进行JS函数调用时全部失效(因为handleFrameLoad函数里把IFrame标识为已加载,如果没调用handleFrameLoad函数就不能进行别的操作了),因此只能自己主动触发这个函数了。

1、在IFrame.as的setupExternalInterface方法中的ExternalInterface.addCallback(_frameId + "_load",handleFrameLoad);语句后加入ExternalInterface.addCallback("on_load",handleFrameLoad);

2、在要加入的网页的window.onload事件中加入以下语句:parent.document.getElementById("SIP_ITS").on_load();SIP_ITS为FLEX应用的ID,on_load()为上一步加入的回调函数

这样就主动回调了IFrame中注册函数,也就完成了初始化的步骤了。


PS:最近又研究了一下,发现上面的不能回调_frameId + "_load"方法的原因是前台调用这个方法时出现了语法错误,不知道为何会产生这个错误

猜想是因为回调函数名的问题,所以修改代码的ExternalInterface.addCallback(_frameId + "_load",handleFrameLoad);为ExternalInterface.addCallback("on_load_" + _frameId,handleFrameLoad);,同时把IFrameExternalCalls.as的INSERT_FUNCTION_LOADIFRAME的onload改成"onLoad='\"+embedID+\".on_load_\"+frameID+\"();' ",这样就可以成功回调了。

分析下来原因可能是某些情况下不能回调方法名以数字开头的吧(因为frameID是数字)。

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...