• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    js调用Flex中的方法并向flex中传参及flex调用js示例
    首先,有了一个swf文件,test.swf,同时也有一个自动生成的html文件,test.html。
    然后,在另外一个文件,test.jsp中,通过iframe,引入了test.html,即引入了swf。

    现在想要在test.jsp中,向flex传参,并调用flex中的方法,我采用的方法是:
    首先,在jsp中写一个调用flex的方法,如下
    复制代码 代码如下:

    function initSWF(){
    //得到swf的object
    var obj = window.frames["rightframe"].ReverseQuery; //rightframe是iframe的名字,ReverseQuery是在test.html中,引入swf做object的id。
    //调用它的方法
    var start = "%=startPoint%>";
    var end = "%=endPoint%>";
    obj.showParams(start,end);
    }
    在html中,有方法
    /*在flex中只能调用本页面的js方法*/
    function initSWF(){
    parent.initSWF();
    }
    在flex,有如下方法:
    public function showParams(start:String,end:String):void{
    Alert.show(start);
    Alert.show(end);
    }

    这时,需要建立一个打开他们之间通信的桥梁了,在flex的初始化时,要使用
    ExternalInterface.addCallback("showParams",showParams); //前者是它暴露给js的方法名,后者是它在flex中的方法名。
    这样,理论上就可以实现调用了。将initSWF方法放在页面的onload方法中即可实现。

    但是产生一个问题,如果flex在页面中没有加载成功时,会报找不到对象的错误。因此,需要我们在确保swf文件加载完成后,再调用swf中的方法。
    但监听它加载完成显然有点浪费感情,于是,我们采用的策略是,等它加载完,再调用js的initSWF方法,即可将环节全部打通。

    因此,在flex的初始化时,加入
    //调用载入页面的initSWF方法
    ExternalInterface.call("initSWF"); //要将它放在注册对外方法之后进行。
    大功告成。

    有需要注意的地方:
    在flex当中调用js的方法,这个方法只能写在引入swf的文件中,但我在jsp中引入了html,所以只能是在html中的js,是调用父页面的js方法。
    而在jsp中对于swf文件的引用,要借助window.frames["rightframe"]
    上一篇:Flex 改变树结点图标的2种方法介绍
    下一篇:解密ASP源代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    js调用Flex中的方法并向flex中传参及flex调用js示例 调用,Flex,中的,方法,并向,