Показать сообщение отдельно
  #1 (permalink)  
Старый 19.07.2014, 14:31
Аватар для korobochkin
Новичок на форуме
Отправить личное сообщение для korobochkin Посмотреть профиль Найти все сообщения от korobochkin
 
Регистрация: 19.07.2014
Сообщений: 2

Как вызвать свою функцию из «чужого» кода в Java Script, не переписывая «чужой» код?
Делаю небольшой плагин чата под Вордпресс, используя в качестве основы Java Script библиотеку Candy (работает с XMPP). В Candy есть функция SetNickname, которая изменяет ник, но она ничего не возвращает — а значит нельзя узнать был изменен ник или нет (ник не изменится, если занят кем-то другим и т. п.). После вызова SetNickname сервер присылает Presense, сообщение, которое обрабатывается в Candy.Core.Event.Jabber.Room.Presence — оттуда как раз можно узнать был изменен ник или нет.

Как запустить свою функцию из Candy.Core.Event.Jabber.Room.Presence, которая будет уже что-то сохранять в базу данных?

В файле core.js был найден следующий код, который, как я понимаю, позволяет "цепляться" за события, которые происходят в Candy.

/** Function: registerEventHandlers
* Adds listening handlers to the connection.
*
* Use with caution from outside of Candy.
*/
self.registerEventHandlers = function() {
self.addHandler(self.Event.Jabber.Version, Strophe.NS.VERSION, 'iq');
self.addHandler(self.Event.Jabber.Presence, null, 'presence');
self.addHandler(self.Event.Jabber.Message, null, 'message');
self.addHandler(self.Event.Jabber.Bookmarks, Strophe.NS.PRIVATE, 'iq');
self.addHandler(self.Event.Jabber.Room.Disco, Strophe.NS.DISCO_INFO, 'iq', 'result');

self.addHandler(_connection.disco._onDiscoInfo.bind(_connection.disco), Strophe.NS.DISCO_INFO, 'iq', 'get');
self.addHandler(_connection.disco._onDiscoItems.bind(_connection.disco), Strophe.NS.DISCO_ITEMS, 'iq', 'get');
self.addHandler(_connection.caps._delegateCapabilities.bind(_connection.caps), Strophe.NS.CAPS);
};
Ответить с цитированием