我想我找到了一个很好的解决方案,可以让回调在 swfObject 库中工作,这与 txominpelu 的建议非常相似。似乎 using-> callbackFn
效果很好,基本上是创建一个匿名函数并返回回调?我会很感激有人让我直截了当地说明为什么这可能都是错误的。(我通常第一次就错了)
我正在使用swfobject.embedSWF
一个callbackFn
在我function callbackFn() {}
用来定义它的手工编码的 JavaScript 文件中运行良好的。现在我正在尝试使用 CoffeeScript,它非常棒。所以 CoffeeScript 会编译callbackFn = function() {};
。我原来的 swfObject.embedSWF 不适用于我的回调的 CoffeeScript 编译版本。
// original javascript file approach
swfobject.embedSWF( "swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0", false,
flashvars, params, attributes, callbackFn );
// original javascript callback
function callbackFn() {
log( "--> callbackFn invoked ");
// ... do stuff
}
我是 CoffeeScript 的新手,我认为你获得命名函数的唯一时间是使用一个类
我首先尝试使用匿名函数来代替swfObject wiki上详述的可选回调参数。然后我想我也许可以得到类似的东西来使用 CoffeeScript 版本。这就是我结束的地方。
# part of .coffee file
swfobject.embedSWF "swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0", false,
flashvars, params, attributes, -> callbackFn()
callbackFn = (evt) ->
console.log "--> callbackFn invoked #{evt}"
# do other stuff
# part compiled .js file
swfobject.embedSWF("swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0.", false,
flashvars, params, attributes, function() {
return callbackFn();
});
callbackFn = function() { ... }
我还研究了通过 callbackFn 传递事件,看起来它有效。
# .coffee file swf
@swfobject.embedSWF "swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0.", false,
flashvars, params, attributes, -> callbackFn(@swfobject)
callbackFn = (evt) ->
console.log "--> callbackFn invoked #{evt}"
# do other stuff