2011-09-08 33 views
6

Facebook JS SDK có chức năng tương đương với chức năng trigger() của jQuery, FB.Event.fire cho phép bạn kích hoạt các trình xử lý mà bạn đính kèm cho các sự kiện cụ thể. Nó hữu ích cho các bài kiểm tra đơn vị của tôi trong QUnit. Nó hoạt động về cơ bản như bạn mong đợi; FB.Event.fire("comment.create", location.href); kích hoạt trình xử lý của tôi cho sự kiện comment.create.Làm cách nào để kích hoạt sự kiện Twitter có ý định lập trình?

Twitter's object cho mục đích Web, twttr dường như có thứ gì đó giống như có thể tương tự, twttr.events.trigger(), nhưng không có giấy tờ.

Ngoại trừ, tôi không thể tìm ra cách kích hoạt mã đúng cách trong mã mà không có lỗi.

Làm cách nào tôi có thể kiểm tra các trình xử lý mà tôi đính kèm theo đối tượng này?

Đối với mã như:

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

tôi mong đợi để có thể kích hoạt nó bằng cách làm một cái gì đó như: twttr.events.trigger("click")

Tất cả những gì tôi cố gắng kết quả trong một lỗi, và tôi không thể giải mã obfuscated source code.

Tôi đã đưa ra một số mã cơ bản về JSFiddle: http://jsfiddle.net/YL6SN/

Trả lời

3

Xin chào Yahel câu hỏi tốt đẹp,

Nó sẽ làm việc nếu bạn gọi đây là:

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

Nó hy vọng một tham số thứ hai đó là đối tượng được truyền lại cho cuộc gọi lại của bạn. Khi nó xảy ra một cách tự nhiên đối tượng này là dân cư với các thông số khác

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

Nếu bạn vượt qua một đối tượng rỗng như tôi đã đề nghị nó sẽ làm việc tốt nhưng trong callback của bạn, bạn nhận được đối tượng chỉ với type bất động sản vì đây được bổ sung bởi kích hoạt.

Và đó chính xác là lỗi bạn đã kích hoạt khi bạn không vượt qua tham số thứ hai. Nó cố thêm tham số type vào undefined và sau đó chết.

+0

Tốt. Cảm ơn, Eduardo. http://jsfiddle.net/YL6SN/2/ hoạt động. Có vẻ như 'target' được cho là phần tử DOM của iframe Twitter (điều này rất quan trọng đối với thử nghiệm của tôi). – Yahel

Các vấn đề liên quan