22.1. 调用JS函数
问题
在AS中调用一个JS函数
解决办法
使用 ExternalInterface.call( ).
讨论
使用 ExternalInterface.call( ) 方法来在AS中同步调用JS的函数。call() 方法要求至少一个参数,指定要调用的函数的名称:
ExternalInterface.call("changeTitle");
这个函数必须定义在HTML 页面中,使用相同的名称:
<script language="JavaScript">
function changeTitle(title) {
if(title == undefined) {
title = "New Title";
}
window.title = title;
}
</script>
如果JS函数接受参数,你可以在调用 call() 方法时传递附加的参数,例如,下面传递一个值给 changTitle()函数:
ExternalInterface.call("changeTitle", "ActionScript 3.0 Cookbook");
一旦 call()调用,JS函数返回的任何值会返回给AS。意思是你可以指定返回的值到一个变量。下面的AS指示可以怎么做:
var title:String = ExternalInterface.call("getTitle");
前面AS 调用的JS 函数看起来如下:
<script language="JavaScript">
function getTitle( ) {
return window.title;
}
</script>
ExternalInterface 可以在以下浏览器上工作:
Internet Explorer 5.0+ (Windows)
Netscape 8.0+ (Windows and Mac OS X)
Mozilla 1.7.5+ (Windows and Mac OS X)
Firefox 1.0+ (Windows and Mac OS X)
Safari 1.3+ (Mac OS X)
如果你需要支持一个ExternalInterface 不能工作的浏览器,你还是可以调用 JS 函数,无论如何,你必须使用 flash.net.navigateToURL() 函数。
navigateToURL() 函数是异步的,意思是它不会返回一个值。使用navigateToURL() 调用一个JS函数,你必须使用 flash.net.URLRequest 对像,有一个值 使用JS协议。下面的例子是调用JS的alert() 函数:
var request:URLRequest = new URLRequest("javascript:alert('example');");
navigateToURL(request);