Я пытаюсь реализовать шаблон pub / sub между веб-сайтом и расширением Google Chrome. До сих пор в большинстве моих экспериментов использовался jQuery из-за его сильного синтаксиса привязки / запуска, но мне не повезло.
Справочная информация:
Я работаю с открытым исходным кодом, реализацией Pomodoro Technique на основе Ruby / Rails. Я изменил код сайта, чтобы показать его активность, используя синтаксис jQuery $ .trigger, чтобы публиковать наблюдаемые события для начала сеанса таймера и конца сеанса таймера. Эти триггеры работают настолько, насколько я могу отследить выполнение в коде события jQuery. Таким образом, сайт является издателем нескольких соответствующих событий.
Я реализовал завершение транзакции слушателем / подписчиком в расширении Google Chrome, загрузив jquery и используя синтаксис .bind () для привязки к пользовательским событиям, публикуемым сайтом. Расширение загружается для сайта и имеет разрешения, установленные для всех путей в URL для сайта.
Со стороны публикации я пробовал оба
$ .Event.trigger ()
а также
$ (Документ) .trigger ()
чтобы быть как можно более общим, на стороне подписчика я попытался связать с несколькими соответствующими элементами, наиболее общим из которых является $ (document) .bind ()
Когда я наблюдаю привязку пользовательского события путем приостановки выполнения после выполнения вызовов привязки в расширении и анализирую результаты
console.dir ($ (документ) .data ( 'события'));
В списке отображаются пользовательские события, на которые я пытаюсь подписаться.
Однако, когда я анализирую результаты console.dir ($ (document) .data ('events')); непосредственно перед вызовом пользовательского события на стороне веб-сайта необходимые обработчики событий не отображаются в списке.
Я упускаю что-то очевидное в том, как это должно работать?
p.s. Я должен отметить, что, если я связываюсь напрямую с событием 'click' на элементах, которые вызывают изменения, мой код расширения работает отлично, но DOM сайта изменяется во время выполнения, поэтому привязки нарушаются не слишком долго, поэтому я надеялся, что некоторые механизм паб-суб может быть более разумным.
EDIT
Как отмечалось в моем ответе на ответ @ ChrisNZL, я попробовал .live () вместо .bind () и вижу такое же поведение.