问题1:位置无法正确显示在指定的位置
解决方法:
a.修改你的html模板,如修改index.template.html,将文档声明修改为
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
b.修改IFrameExternalCalls.as源码,查找INSERT_FUNCTION_MOVEIFRAME,将它的值修改成如下所示:
public static var INSERT_FUNCTION_MOVEIFRAME:String =
"document.insertScript = function ()" +
"{ " +
"if (document.moveIFrame==null)" +
"{" +
"moveIFrame = function(frameID, iframeID, x,y,w,h) " +
"{" +
"var frameRef=document.getElementById(frameID);" +
"var flashMovie=document.getElementById('"+ FlexGlobals.topLevelApplication.id + "');" +
"frameRef.style.left=x + flashMovie.offsetLeft;" +
"frameRef.style.top=y + flashMovie.offsetTop;" +
"var iFrameRef=document.getElementById(iframeID);" +
"iFrameRef.width=w;" +
"iFrameRef.height=h;" +
"}" +
"}" +
"}";
问题2:Flexiframe无法随TitleWindow移动而移动
解决方法:在TitleWindow的move事件中手动让Flexiframe触发updateDisplayList方法,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300" xmlns:iframe="iframe.*" move="titlewindow1_moveHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.MoveEvent;
protected function titlewindow1_moveHandler(event:MoveEvent):void
{
baiduIFrame.invalidateDisplayList();
}
]]>
</fx:Script>
<iframe:IFrame id="baiduIFrame" width="100%" height="100%" label="Google"
source="http://www.baidu.com"/>
</s:TitleWindow>