一、getURL方法
在flash中可以用getURL方法来调用JS中的函数。
例:
上面例子是点击按钮在新窗口中打开当前网页,用getURL直接将JS代码作为参数写在flash中。也可以使用 GET 或 POST 发送变量。下面的示例使用 GET将变量追加到 URL:
注:
1) 当使用 getURL() 调用 JavaScript 时,url 参数最多只能包含 508 个字符。
2) 只有将falsh发布到网页上面,此方法才有效,直接在swf文件中调会报异常。
二、ExternalInterface接口
1) addCallback(methodName:String, instance:Object, method:Function) : Boolean
注册一个被js调的as方法。
methodName:从js中调用 as 函数时使用的名称。此名称不必与 as 方法的实际名称匹配。
instance:在该方法中被解析成的对象。此对象不一定是在其上可找到该方法的对象,可以指定任何对象(或 null)。
method: js中调用的 as方法。
2) call(MethodName:String, [Parameters:Object]) : Object
在flash中直接调用一个js函数。
这个方法有两个参数:
MethodName:你想要调用的javascript函数名要以字符串的形式。
Parameters:需要传递给javascript函数的参数,用逗号分开,是可选的。
三、实例
下面是在网上找的一个实例,加入了本人的整合、说明:
Flash代码:
网页代码:
运行效果:
点击“GetURL调JS”按钮,效果:
代码比较简单,有注释,就不分析了。
注:
1) 例子中getElementById是IE的方法,如果换成其它浏览器,不一定能运行出效果,所以最好用下面的方法:
2) 承载flash的html文件在本地运行会报错
四、扩展
在做flash与js交互时遇到了这么一个问题:我要在调用承载flash的html页面时,通过URL将参数传递给html页面,html在加载flash时通过调用flash中的方法将参数传进flash来初始化flash。但这样每次在调用flash方法的时候都报异常说,对象或方法不可用(IE7中做的测试),原因是flash还没有加载上,当然不能调用其中的方法了,延时处理一下就好了。
例: