JavaScript (js) 和Flex交互總結(IE&&非IE瀏覽器)

首先,無論是Flex調用js,仍是js調用 Flex瀏覽器

須要引入的包(Flex包)import flash.external.*; app

其次,簡單說說相互之間如何調用函數

一、Flex程序調用js的方法 :flex

這個相對簡單,以下spa

Flex中:code

public function FlexCallJs(){
    ExternalInterface.call("FlexJS");      // flex 直接調js裏的方法             
}

Js中:xml

function FlexJS(){
    alert("flex call js");
}

二、Js調用Flex中的方法 :對象

這個相對而言注意的多些,以下get

Flex中:flash

public function callFlexback(){
    //該函數必須是先啓動,即該函數的做用是監聽來自js中的調用 能夠放在Application 中的creationComplete
    //<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="callFlexback()" >
    ExternalInterface.addCallback("jsCallFlex",jsCallFlex);  
    //js調flex入口,addCallback()函數前邊是js調用該flex的入口,然後邊的參數纔是調用flex程序中真正的函數<習慣將兩個代碼寫成同樣>
 }
 //真正的供js調用的Flex裏的函數
 public function jsCallFlex():void{
     Alert.show("@!@");
 }

 JsP中:

<div class="map1" style="display:block"> 
    <object id="object" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="990" height="222">
    <param name="movie" value="common/FlexJsTest.swf" /><!-- 彷佛這個用不到啊 -->
    <param name="quality" value="high" />
    <param name="wmode" value="transparent" />
    <embed id="embedid" src="common/FlexJsTest.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="990" height="600" wmode="transparent"></embed>
     </object>
</div>
//經過opject對象引入flex編譯的哦swf文件 src是相關的路徑  其中最主要的東西是embedid,須要同過這個id爲IE或者非IE瀏覽器獲取該flex中的方法

Js中:

function jscallflex(){
     var x;
     if(navigator.appName.indexOf("Microsoft") != -1){//針對IE瀏覽器
        x=document.getElementById('embedid').jsCallFlex();
     }
     else {//針對非IE瀏覽器
        x=document.embeds['embedid'].jsCallFlex();
     }
}
相關文章
相關標籤/搜索