我正在尝试在我的模块中注册+1次点击,这是一个匿名函数。
为此,我创建了一个全局对象MyModule,并通过它导出了我的点击处理函数。问题是 - 我的点击处理程序没有被调用。
Live demo。代码:
// Initialize +1 button
gapi.plusone.go();
(function(){
window.MyModule = {};
function plusOneClicked() {
alert("+1!");
}
window.MyModule.plusOneClicked = plusOneClicked;
})()
...
<g:plusone callback='window.MyModule.plusOneClicked'></g:plusone>
当我作为回调给出一个外部函数,其唯一目的是将调用转发给window.MyModule.plusOneClicked,它可以工作:
function foo() {
window.MyModule.plusOneClicked();
}
...
<g:plusone callback='foo'></g:plusone>
为什么点击处理程序会错过window.MyModule.plusOneClicked(),但找到foo()?
答案 0 :(得分:1)
谷歌可能正在撰写
window[callback]();
在他们的代码中。
这要求callback
字符串引用window
的属性,而不是另一个对象的属性。
答案 1 :(得分:0)
我相信,因为callback
需要直接处理程序方法(如foo()
)而不是引用(如window.MyModule.plusOneClicked
})。所以基本上,你不能简单地为click处理程序分配这样的引用,而是编写一个(包装器)方法作为处理程序并让它执行必要的调用。