Очевидно и по существу, никакими обсерверами, биндами и триггерами здесь не пахнет.
Решение оказалось не самое тривиальное, но архитектурно корректное и звучит как
"Специальные события jQuery".
В рамках моей задачи, рабочая реализация выглядит следующим образом:
$.event.special.dblrightclick = {
setup : function(data, namespaces) {
var e = $(this);
e.bind("contextmenu", $.event.special.dblrightclick.handler);
e.data("x", null);
e.data("y", null);
e.data("time", null);
e.data("limit", data || 400);
},
teardown : function(namespaces) {
$(this).unbind("contextmenu", $.event.special.dblrightclick.handler);
},
handler : function (event) {
event.preventDefault();
var e = $(this);
if (e.data("x") == event.screenX && e.data("y") == event.screenY
&& (event.timeStamp - e.data("time")) < e.data("limit")) {
e.data("x", null);
e.data("y", null);
e.data("time", null);
event.type = "dblrightclick";
$.event.dispatch.apply(this, arguments);
} else {
e.data("x", event.screenX);
e.data("y", event.screenY);
e.data("time", event.timeStamp);
}
}
};
И, соответственно, ее использование:
$("#widget").on("dblrightclick", ".button", function() {
alert("dblrightclick fired");
});
А также управление единственным параметром задержкой:
$("#widget").on("dblrightclick", ".button", 200, function() {
alert("dblrightclick fired");
});
Очевидно, что данный код является расширением базового фреймворка и не имеет никакого отношения к бизнес-логике приложения. Как следствие - данный код можно подключать бесконфликтно к разным проектам.
UPD Полное решение:
https://github.com/comm1x/jquery-event-dblrightclick