Flex 与 JavaScript 交互,主要依靠Flex的ExternalInterface,其提供了addCallBack和call方法.
下面的例子将演示Flex调用javascript,和javascript调用Flex
js代码
<!-- saved from url=(0014)about:internet --> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style> body { margin: 0px; overflow:hidden } </style> <script> /** * 供flex里面调用 */ function hello(param) { alert(param); return "jsp Hello:" + param; } /** * 可以调用flex里面的函数 */ function callFlexFunction() { var x = document.getElementById("flexuploader").flexHelloWorld("Hello", "world"); alert(x); } </script> </head> <body> <input type="button" value="call" onclick="callFlexFunction();"/> <div > <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="flexuploader" width="600" height="450" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> <param name="movie" value="flexuploader.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#869ca7" /> <param name="allowScriptAccess" value="sameDomain" /> <embed src="flexuploader.swf" quality="high" bgcolor="#869ca7" width="600" height="450" name="flexuploader" align="middle" play="true" loop="false" quality="high" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"> </embed> </object> </div> </body> </html>
Flex代码
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initApp()"> <mx:Script> <![CDATA import mx.controls.Alert; public function flexHelloWorld(param1:String, param2:String):String { Alert.show("param1: " + param1 + "; param2:" + param2); return "Hello " + param1 + param2; } public function initApp():void { ExternalInterface.addCallback("flexHelloWorld", flexHelloWorld); } public function jspHello():void { var s:String = ExternalInterface.call("hello", "Flex"); Alert.show(s); } ]]> </mx:Script> <mx:Button x="52" y="58" label="call javascript" click="jspHello()"/> </mx:Application>
参考文章:
http://wangcheng.iteye.com/blog/81160