6

Facebook JS SDK 具有相当于 jQuery 的trigger()功能,FB.Event.fire 它允许您触发为特定事件附加的处理程序。它对我在 QUnit 中的单元测试很有帮助。它基本上可以按照您的预期工作;FB.Event.fire("comment.create", location.href);触发我的comment.create事件处理程序。

Twitter 的Web Intents对象twttr似乎有一些看起来可能相似的东西twttr.events.trigger(),但它没有记录。

除了,我不知道如何在代码中正确触发它,而不会引发错误。

如何以编程方式测试附加到该对象的处理程序?

对于像这样的代码:

twttr.events.bind("click", function(intent){
    console.dir(intent);
});

我希望能够通过执行以下操作来触发它:twttr.events.trigger("click")

我尝试的一切都会导致错误,而且我无法破译混淆的源代码

我在 JSFiddle 上放了一些基本代码:http: //jsfiddle.net/YL6SN/

4

1 回答 1

4

你好 Yahel 好问题,

如果你这样称呼它应该可以工作:

twttr.events.trigger("click", {});

它需要第二个参数,即传递回回调的对象。当它自然发生时,该对象将填充其他参数

{target: b,region: "intent",type: "click",data: {}}

如果您像我建议的那样传递一个空对象,它也会起作用,但在您的回调中,您只会收到带有type属性的对象,因为这是由触发器添加的。

这正是您在不传递第二个参数时触发的错误。它尝试将type参数添加到undefined然后死掉。

于 2011-09-08T21:44:40.653 回答