我正在对 JavaScript 方法进行多次 ExternalInterface 调用,并有一个辅助函数来执行此操作:
protected function JSCall( methodName:String, ...args ):void
{
try
{
ExternalInterface.call( methodName, args );
}
… etc …
}
然而,这意味着 JavaScript 方法只会传递一个参数——参数数组——这意味着我必须更改 JavaScript 以适应这一点,例如而不是:
function example(argument1, argument2)
{
}
我最终得到:
function example(args)
{
var argument1 = args[0];
var argument2 = args[1];
}
我想做的是展开传递给 JSCall
方法的参数数组,以便每个参数都单独传递给 ExternalInterface
调用,这样:
JSCall('example', ['one', 'two'])
工作方式如下:
ExternalInterface.call('example', 'one', 'two')
最佳答案
要使用多个参数从 flash 调用 javascript 函数,您所要做的就是:
ExternalInterface.call.apply(null, [functionName, arg1, arg2, ..., argn]);
如果您从另一个函数的可变参数列表中获取参数,那么您可以使用:
function JSCall(methodName:String, ...args):void
{
if (ExternalInterface.available){
args.unshift(methodName);
ExternalInterface.call.apply(null, args);
}
//btw, you can do the same with trace(), or any other function
args.unshift('Calling javascript function');
trace.apply(null, args);
}
你会调用其他地方:
JSCall('console.log', 'Testing', 123, true, {foo:'bar'});
...这将在您的 firebug/webkit 控制台上打印类似 Testing 123 true Object
的内容。
这已经过测试并且可以肯定地工作,因为我正在一个真实的项目中使用它。
关于javascript - 在函数调用中展开 ...args 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432462/