我正在使用flash和firefox(最新版本,35.0.1),并且无法找到任何解决方案。 我想使用ExternalInterface使用javascript调用ActionScript函数。 所以我写了这个简单的javascript函数( App 只是一个包装我的函数的对象):
App.swfCall = function(callbackName, params) {
var callback = $('#swf object, #swf embed')[0][callbackName];
if(typeof(callback) === "function") {
callback.apply(null, params); // executed but throws NPObject error...
}
}
Firefox发出错误:
Bad NPObject作为私人数据!
我发现这个错误的唯一帮助与我的问题无关,如:
实际上,如果我不使用 Function javascript对象(使用 call()或 apply()),一切正常。所以这个正在运作:
App.swfCall = function(callbackName, data) {
var swf = $('#swf object, #swf embed')[0];
if(typeof(swf[callbackName]) === "function") {
swf[callbackName](data);
}
};
无论如何,这有很多问题:
所以我需要的是能够将参数传递给swf(0,一个或多个!) 我也非常想了解发生的事情。
我说没有跨域问题,实际上它是facebook中的iframe。但显然一切都在它的内部和同一个领域,所以它不应该是一个问题......应该吗?
谢谢!
答案 0 :(得分:1)
如果您想将参数作为数组添加到函数中,可以使用ECMA6定义的Spread运算符中的新函数进行尝试:
App.swfCall = function(callbackName, data) {
var swf = $('#swf object, #swf embed')[0];
if(typeof(swf[callbackName]) === "function") {
swf[callbackName](....data);
}
};
可在此处找到运营商的说明: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Spread_operator