Flex经过js调用控件的方法以及JS中拼接XML

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>


其中,传参就是通过?来传递的。