-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjquery.event.dblrightclick.js
47 lines (43 loc) · 1.13 KB
/
jquery.event.dblrightclick.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$.event.special.dblrightclick = {
// On subscribe
setup : function(data, namespaces) {
var e = $(this);
e.bind("contextmenu", $.event.special.dblrightclick.handler);
e.data($.extend({
x : null,
y : null,
time : null,
offsetX : 10, // Available X offset (pixels)
offsetY : 10, // Available Y offset (pixels)
offsetT : 300 // Available time difference (milliseconds)
}, data || {}));
},
// On unsubscribe
teardown : function(namespaces) {
$(this).unbind("contextmenu", $.event.special.dblrightclick.handler);
},
// Logic triggering events
handler : function (event) {
event.preventDefault();
var e = $(this);
var data = e.data();
var diffX = Math.abs(data.x - event.screenX);
var diffY = Math.abs(data.y - event.screenY);
var diffT = Math.abs(event.timeStamp - data.time);
if (diffX < data.offsetX && diffY < data.offsetY && diffT < data.offsetT) {
e.data({
x : null,
y : null,
time : null
});
event.type = "dblrightclick";
$.event.dispatch.apply(this, arguments);
} else {
e.data({
x : event.screenX,
y : event.screenY,
time : event.timeStamp
});
}
}
};