我想我找到了一个很好的解决方案,可以让回调在 swfObject 库中工作,这与 txominpelu 的建议非常相似。似乎使用-> 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 新手,我认为只有你一次 get named functions is with a class
我首先尝试使用匿名函数来代替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