Как я могу вызвать события в Твиттере программно? - PullRequest
6 голосов
/ 08 сентября 2011

Facebook JS SDK имеет эквивалент функции jQuery trigger(), FB.Event.fire, которая позволяет вам запускать обработчики, которые вы присоединяете для определенных событий.Это полезно для моих модульных тестов в QUnit.Это работает в основном так, как вы ожидаете;FB.Event.fire("comment.create", location.href); запускает мои обработчики для события comment.create.

Объект Twitter для веб-элементов, twttr, похоже, имеет нечто похожее на twttr.events.trigger(), но его недокументировано.

За исключением того, что яне могу понять, как правильно запустить его в коде, без выдачи ошибки.

Как программно протестировать обработчики, которые я присоединяю к этому объекту?

Для кода типа:

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

Я ожидаю, что смогу вызвать его, выполнив что-то вроде: twttr.events.trigger("click")

Все, что я пробую, приводит к ошибке, и я не могу расшифровать обфусцированный исходный код .

Я поставил базовый код на JSFiddle: http://jsfiddle.net/YL6SN/

1 Ответ

4 голосов
/ 09 сентября 2011

Здравствуйте, Yahel хороший вопрос,

Это должно работать, если вы вызываете это:

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

Ожидается второй параметр, который является объектом, который передается обратно вашему обратному вызову.Когда это происходит естественным образом, этот объект заполняется другими параметрами

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

Если вы передадите пустой объект, как я и предлагал, он будет работать также, но при обратном вызове вы получите объект только со свойством type, так какэто добавляется триггером.

И это именно та ошибка, которую вы вызвали, когда не передали второй параметр.Он пытается добавить параметр type к undefined и затем умирает.

...