Téléscopage avec le scroll sur les écrans tactiles #13

Open
opened 9 months ago by tcharlss · 3 comments
Owner

Sur les écrans tactiles, quand on veut scroller la page avec le doigt, si on commence le geste niveau d'une zone "crayonnable", ça ouvre le mode d'édition des crayons.

Ce qui rend la navigation très très compliquée.

Il faudrait arriver à différencier les clics des scrolls.

Sur les écrans tactiles, quand on veut scroller la page avec le doigt, si on commence le geste niveau d'une zone "crayonnable", ça ouvre le mode d'édition des crayons. Ce qui rend la navigation très très compliquée. Il faudrait arriver à différencier les clics des scrolls.
Poster
Owner

2 pistes après une recherche rapide - donc pas sûr que ça soit les meilleures méthodes - :

Piste 1

https://www.geeksforgeeks.org/how-to-differentiate-mouse-click-and-drag-event-using-javascript/

Là pour faire un truc au clic ils se branchent sur l'event mouseup.
En parallèle ils ajoutent 2 écouteurs d'évènements pour savoir si la souris est en mouvement ou pas (mousemove → scroll, mousedown → clic).
Ce qui permet de distinguer les simples clics des scrolls.

	let drag = false;
	document.addEventListener(
		'mousedown', () => drag = false);

	document.addEventListener(
		'mousemove', () => drag = true);

	document.addEventListener(
		'mouseup', () => console.log(
			drag ? 'drag' : 'click'));

Piste 2

https://stackoverflow.com/a/66143678

Un peu la même chose, mais en écoutant directement un event scroll.
Et donc au clic, ça permet de discréminer.

var disable_click_flag = false;
var timeout = null;

window.addEventListener('scroll', () => {
  disable_click_flag = true;

  if(timeout) clearTimeout(timeout);
  
  timeout = setTimeout(function(){ disable_click_flag = false }, 250);
}

element.addeventlistener('click', () => {
  if(disable_click_flag === false{
    #do somthing
  }
})
2 pistes après une recherche rapide - donc pas sûr que ça soit les meilleures méthodes - : ## Piste 1 https://www.geeksforgeeks.org/how-to-differentiate-mouse-click-and-drag-event-using-javascript/ Là pour faire un truc au clic ils se branchent sur l'event `mouseup`. En parallèle ils ajoutent 2 écouteurs d'évènements pour savoir si la souris est en mouvement ou pas (`mousemove` → scroll, `mousedown` → clic). Ce qui permet de distinguer les simples clics des scrolls. ```js let drag = false; document.addEventListener( 'mousedown', () => drag = false); document.addEventListener( 'mousemove', () => drag = true); document.addEventListener( 'mouseup', () => console.log( drag ? 'drag' : 'click')); ``` ## Piste 2 https://stackoverflow.com/a/66143678 Un peu la même chose, mais en écoutant directement un event `scroll`. Et donc au clic, ça permet de discréminer. ```js var disable_click_flag = false; var timeout = null; window.addEventListener('scroll', () => { disable_click_flag = true; if(timeout) clearTimeout(timeout); timeout = setTimeout(function(){ disable_click_flag = false }, 250); } element.addeventlistener('click', () => { if(disable_click_flag === false{ #do somthing } }) ```
Owner

"sur les écrans tactiles" : tu peux préciser l'OS et le navigateur ? j'ai bien peur que ça soit assez différent entre un OS et un autre...

"sur les écrans tactiles" : tu peux préciser l'OS et le navigateur ? j'ai bien peur que ça soit assez différent entre un OS et un autre...
Poster
Owner

Firefox / Mobian
+ le navigateur d'Uports (feu Ubuntu Touch)

Et c'est reproductible avec les outils de dev de chrome - quoique moins souvent

Firefox / Mobian \+ le navigateur d'Uports (feu Ubuntu Touch) Et c'est reproductible avec les outils de dev de chrome - quoique moins souvent
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.