Flex通过js调用控件的方法以及JS中拼接XML
首先,要引入一个Flex库,flex-iframe-1.5.1.swc,这样,就可以使用<code:IFrame标签来引入jsp了。
在程序中,需要通过Flex,直接调用控件的某个方法。有时甚至需要传参。研究了一下,把成果贴上来。
首先,写个JSP:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String id = request.getParameter("id"); //用来记录从Flex中传递过来的参数。
%>
<!-- 铺满窗口: margin: 0px;padding: 0px;overflow:auto; 前两个是纵向,最后一个去掉滚动条-->
<script type="text/javascript">
function test(){
alert("<%=id%>"); //验证参数已经传递过来
var playViewOCXObj = document.getElementById("PlayViewOCX");
var XmlDoc = new ActiveXObject("MSXML2.DOMDocument");
var Instruction = XmlDoc.createProcessingInstruction("xml","version='1.0' encoding='utf-8'");
XmlDoc.appendChild(Instruction);
var Root = XmlDoc.createNode(1, "Parament", "");
Element = XmlDoc.createElement("MatrixCode");
Element.text = '';
Root.appendChild(Element);
XmlDoc.appendChild(Root);
//调用
m_iLinkServer = playViewOCXObj.StartTask_Preview_InWnd(XmlDoc.xml,0);
}
<body onload="test();" style="height: 100%;width: 100%;margin: 0px;padding: 0px;overflow:auto;">
<div id="cmdocx">
<object classid="CLSID:D5E14042-7BF6-4E24-8B01-2F453E8154D7" id="PlayViewOCX" name="PlayViewOCX" width="100%" height="100%" ></object>
</div>
</body>
然后,在Flex端:
<mx:VBox height="100%" width="100%">
<code:IFrame source="http://ip:port/testOcx/index.jsp?id=test" height="100%" width="100%">
</code:IFrame>
</mx:VBox>
其中,传参就是通过?来传递的。