Моя идея - создать плагин, который будет служить оберткой вокруг функции trigger
в jquery:
(function($) {
$.fn.extend({
trigger: function(type, data) {
return this.each(function() {
if (typeof type == "string" && type.startsWith("test:")) {
this.dispatchEvent(new window.CustomEvent(type, data));
}else{
jQuery.event.trigger(type, data, this)
}
});
}
});
})(jQuery);
Это слегка модифицированный код из: https: // github. com / jquery / jquery / blob / master / src / event / trigger.js # L185
Предполагая, что вы добавляете обработчик следующим образом:
test.addEventListener('test:custom', function(ev) {
console.log('test:custom', ev.detail)
});
Вы можете отправьте его по:
$(test).trigger('test:custom', { detail: 'jquery'});
Недостатком является то, что вам нужно префикс всех ваших пользовательских событий с каким-то пространством имен.
Можно "объединить" одноадресную передачу и многоадресно передать .local
пространства имен (с имеющей приоритет одноадресной передачей), как объяснено на Avahi и Unicast .local. Apple имеет инструкции для того, чтобы сделать то же на Mac OS X.
Другая опция состоит в том, чтобы добавить domain-name=.localnet
кому: /etc/avahi/avahi-daemon.conf
иметь его использование .localnet
вместо .local
для многоадресной передачи пространство имен DNS.