您好,欢迎访问一九零五行业门户网

调用JavaScipt或者被JavaScript调用

一、在javascript中调用flex方法
在flex中可以用externalinterface来调用flex的方法,途径是通过在flex应用可调用方法列表中添加指定的公用方法。在flex应用中通过调用addcallback()可以把一个方法添加到此列表中。addcallback将一个actionscript的方法注册为一个javascript和vbscript可以调用的方法。
addcallback()函数的定义如下:
addcallback(function_name:string, closure:function):void
function_name参数就是在html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。
举个例子:
<mx:script>
    import flash.external.*;
    public function myfunc():number {
        return 42;
    }
    public function initapp():void {
        externalinterface.addcallback(myflexfunction,myfunc);
    }
</mx:script>
那么在html页面中,先获得swf对象的引用,也就是用<object .../>声明的swf的id属性,比如说是myflexapp。然后就可以用以下方式调用flex中的方法。
<script language='javascript' charset='utf-8'>
    function callapp() {
        var x = myflexapp.myflexfunction();
        alert(x);
    }
</script>
<button onclick="callapp()">call app</button>
二、在flex中调用 javascript
你可以调用html页面中的javascript,通过与javascript的交互,可以改变style,调用远程方法。还可以将数据传递给html页面,处理后再返回给flex,完成这样的功能主要有两种方法:externalinterface()和navigatetourl()。
在flex中调用javascript最简单的方法是使用externalinterface(),可以使用此api调用任意javascript,传递参数,获得返回值,如果调用失败,flex抛出一个异常。
externalinterface封装了对浏览器支持的检查,可以用available属性来查看。
externalinterface的使用非常简单,语法如下:
flash.external.externalinterface.call(function_name: string[, arg1, ...]):object;
参数function_name是要调用的javascript的函数名,后面的参数是javascript需要的参数。
举个例子说明如何调用javascript函数
flex应用中,添加如下方法:
<mx:script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:script>
        import flash.external.*;
public function callwrapper():void {
            var f:string = changedocumenttitle;
            var m:string = externalinterface.call(f,new title);
            trace(m);
        }
    </mx:script>
    <mx:button label="change document title" click="callwrapper()"/>
</mx:application>
html页面中有如下函数定义:
<script language="javascript">
    function changedocumenttitle(a) {
        window.document.title=a;
        return successful;
    }
</script>
其它类似信息

推荐信息