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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
const SCROLL_ICON="transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAi5QTFRFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAEAAAAAAAAAAAAAAAAAAAAAAAAA////PMNlIQAAAKR0Uk5TAAAAD2p/JQqN+74iBn34sRkDbvT+ohIBX+78kwxQ5/mEB0Pf9XMEM9XwYgCLxhBc1tvc9f7Uu756BgQZHSXC/WIFCQMJu/1cCbv9XAm7/VwJu/1eB7f+YQa1/mEGtf5hBrX+YQgpLzTC/m4RFAhm5+vr+f/i0NOQCILHECPD6lUw0PBmAj3a9nUESuP6hQgAWOv8lA0CZ/H/pBIFdvWxGghQZRvM0CN6AAAAAWJLR0S5OrgWYAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAUJJREFUOMuV0FNzREEQhuET27ZtOxvbtm3btm10bOfnBV0bnJ3Zqv1u3+diphlGsImIionz6xKSUiAtQ++ycvIAJwqKtK6krAJweqaqpk7MQhqaWgBwfnGpraNLAsJ6+p8drq5vbg0MjQjA2AS+d3f/8GhqZs7TLSyBu6fnFytrGzaw/enw+vYOdvZs4ODo5OyCwNXN3cPTiw28fXz9/BFwAgKDgkn/CAlFEBZOOVREJIKoaAqIiUUQF08BCYkIkpIpICUVQVo6BWRkIsjKpoCcXAR5+RRQUIigqJhUS0rLyisQVFZV19TygLr6hsYmBM0trW3tHWzQCf/W1c0GPb1/e18/7yMGBn/70PAI4ZmjY9w+PjFJ/ObUNPaZ2TnyHeYXFr/60vIK5VDM6to6wMbmFkPd9s4u7O0zfHZweHTMCLYPkhas1aCqNgQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTEtMDQtMDdUMTE6Mjk6MzcrMDI6MDB8AZWGAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDExLTA0LTA3VDExOjI5OjM3KzAyOjAwDVwtOgAAAABJRU5ErkJggg==) no-repeat scroll center";
// mouse functions
var mouse_init;
function MouseGesturesObj() {
const BUTTON1 = 1<<0;
const BUTTON2 = 1<<1;
const BUTTON3 = 1<<2;
const gap = 30;
const min = Math.min(50, window.outerWidth / 2);
const MouseGestures = {
x : 0,
y : 0,
state : -1,
target : null,
span : null,
timer_id : 0,
addEventListener:
function(type, func, capture) { window.addEventListener(type, func, capture); },
removeEventListener:
function(type, func, capture) { window.removeEventListener(type, func, capture); },
remove_span:
function() {
MouseGestures.span.parentNode.removeChild(MouseGestures.span);
MouseGestures.timer_id = 0;
},
mouseDown:
function (ev) {
if (!(MouseGestures.target = ev.target.href)) {
MouseGestures.target = null;
}
if (ev.button == 1) {
MouseGestures.state = 1;
MouseGestures.x = ev.x;
MouseGestures.y = ev.y;
window.addEventListener('mousemove', MouseGestures.mouseMove, false);
}
},
clear:
function() {
MouseGestures.target = null;
MouseGestures.state = -1;
window.removeEventListener('mousemove', MouseGestures.mouseMove, false);
},
mouseUp:
function (ev) {
if (ev.button != 1) {
MouseGestures.clear();
return;
}
if (Math.abs(ev.y - MouseGestures.y) < gap ) {
if (MouseGestures.x - ev.x > min) {
window.history.back();
}
else if (ev.x - MouseGestures.x > min)
window.history.forward();
}
else if (Math.abs(ev.x - MouseGestures.x) < gap) {
if (MouseGestures.y - ev.y > min) {
window.scrollTo(0, 0);
}
else if (ev.y - MouseGestures.y > min)
window.scrollTo(0, document.height - window.innerHeight);
}
MouseGestures.clear();
},
mouseMove:
function (ev) {
if (Math.abs(ev.y - MouseGestures.y) > gap && Math.abs(ev.x - MouseGestures.x) > gap) {
MouseGestures.clear();
}
},
init:
function () {
window.addEventListener('mousedown', MouseGestures.mouseDown, false);
window.addEventListener('mouseup', MouseGestures.mouseUp, false);
},
}
MouseGestures.init();
}
new MouseGesturesObj();
|