Obsługa dotykiem

w dziale Dostosowywanie Opery do własnych potrzeb
lukasz66 napisał(a):

Witam
Czy wie ktoś jak ustawić przeciąganie strony dotykiem (na ekranie dotykowym), gdy wykonam gest palcem w górę przeciąga mi stronę całkiem na górę gdy gest wykonam w dół to strona idzie na sam dół, a mi chodzi o przytrzymanie palcem strony i poruszanie strony wraz z kierunkiem palca. W IE i FF działa to w standardzie w Chromie potrzeba wtyczki chrometouch, jako, że mi się opera spodobała i próbuję ją pod siebie ustawić to szukam rozwiązania, forum przejrzałem ale wszędzie piszą o sterowanie dotykiem w mobilnej operze. Proszę pomóżcie bo już mi się troi w głowie od przeglądania wszystkich wątków i szukania rozwiązania.
Pozdrawiam

Henk1987 napisał(a):

tak na szybko przychodzi mi do głowy tylko użycie przycisku włącz zaznaczanie tekstu z wygląd/przyciski/widok strony. wada jest taka, że na odnośniki trzeba klikać dwa razy...

ja też mam dotykowy ekran, ale jakoś nie uśmiecha mi się machanie łapami, wolę tradycyjnie użyć touchpada.

lukasz66 napisał(a):

Dzięki za odpowiedz, zobaczyłem światełko w tunelu wink wcale nie trzeba klikać dwa razy by otworzyć link, trochę brakuje przyspieszenia (jak w ruchu kursorem myszki) ale daje radę.

ps. do pracy używam tylko myszki ale do przeglądania neta ekran dotykowy świetnie mi się sprawdza.

uniqiq napisał(a):

Kiedyś napisałem w tym celu skrypcik, ale nie miałem czasu go dopracować, bo przestałem korzystać z tabletu. Nie do końca dobrze działa w iframe'ach, poza tym jest ok. Ma między innymi bezwładność, o której piszesz. Mi zależało też na możliwości zaznaczania tekstu. Skrypt podrzucam, bo może komuś się przyda. Trzeba go zapisać z rozszerzeniem *.js i dorzucić do katalogu z userscriptami. Jakby ktoś jeszcze poprawił te iframe'y...

// ==UserScript==
// @name handUp
// @author uniq
// @version 0.1
// @description move page with your mouse
// ==/UserScript==

var handUpIsOn = true;

(function () {
	var path = document.location.toString()
	if (path.indexOf('msdn2.microsoft.com') == -1 
//	&& path.indexOf('addpost.dml') == -1
//	&& path.indexOf('reply.dml') == -1 
//	&& path.indexOf('edit.dml') == -1
//	&& path.indexOf('editpost.dml') == -1
	&& path.indexOf('google.com/reader') == -1
	) 
	{
		var timeDelay = 50; //delay in miliseconds between page moving
		var inertia = 0.95; //inertia

		var handLastX = -1
		var handLastY = -1
		var handButton = 0
		
		var handOldOnMouseMove;
		var handOldOnMouseDown;
		var handOldOnMouseUp;
		
		var handOn_moveX = 0;
		var handOn_moveY = 0;
		
		var run = false;
		
		var noMouseMove = true;
		
		var timerIsRunning = false;

		function handMouseMoveEvent(event) {
			if (!handUpIsOn) return;
			noMouseMove = false;
			x = event.screenX;
			y = event.screenY;
			if (run) {
				if (handButton == 1) {
					handOn_moveX = 2*(handLastX-x);
					handOn_moveY = 2*(handLastY - y);
					window.scrollBy(handOn_moveX, handOn_moveY);
				}
			} else {
				handLastX = x;
				handLastY = y;	
			}
			run = !run;
		}

		function handMouseDownEvent(event) {
			noMouseMove = true;
			handButton = 1;
		}

		function handMouseUpEvent(event) {
			handButton = 0;
			if (noMouseMove) {
				handOn_moveX = 0;
				handOn_moveY = 0;
			} else if (!timerIsRunning) {
				timerIsRunning  = true;
				setTimeout(handOn_moveBabyMove, timeDelay);
			}
		}

		handOldOnMouseMove = document.onmousemove;
		handOldOnMouseDown = document.onmousedown;
		handOldOnMouseUp = document.onmouseup;
		
		document.addEventListener('mousemove', handMouseMoveEvent, false);
		document.addEventListener('mousedown', handMouseDownEvent, false);
		document.addEventListener('mouseup', handMouseUpEvent, false);
		
		function handOn_moveBabyMove() {
			if (handButton == 0) {				
				window.scrollBy(handOn_moveX, handOn_moveY);
				handOn_moveX *= inertia;
				handOn_moveY *= inertia;
			}
			if (!(handOn_moveX > -1 && handOn_moveX < 1 && handOn_moveY > -1 && handOn_moveY < 1))
				setTimeout(handOn_moveBabyMove, timeDelay);
			else
				timerIsRunning = false;
		}
	}
})()