我该如何以编程方式触发Twitter意图事件?

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/

1个回答

4

你好Yahel,不错的问题。

如果你调用以下内容,应该可以正常工作:

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

它期望一个第二个参数,该参数是传递回您的回调函数的对象。当自然发生时,此对象将填充其他参数。

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

如果您像我建议的那样传递一个空对象,它也可以起作用,但在回调函数中,您只会接收到带有"type"属性的对象,因为这是由触发器添加的。
当您不传递第二个参数时,这正是您触发的错误。它尝试将"type"参数添加到 "undefined" 上,然后就会终止运行。

不错。谢谢,Eduardo。http://jsfiddle.net/YL6SN/2/有效。看起来`target`应该是Twitter iframe的DOM元素(这对我的测试非常关键)。 - Yahel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接