Touch screen klikt ongewild op link

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • zoutepopcorn
  • Registratie: September 2007
  • Laatst online: 24-05-2023
Ik heb een html pagina met een canvas erin (werkt met fabricjs). Hier kan op een vierkant geklikt worden en er wordt vervolgens een <div> als overlay opgemaakt. Hierop kan geklikt worden en dat werkt op de desktop.

Echter op een touchscreen wordt door de klik op het vierkant kennelijk ook meteen op de link die vervolgens opkomt.

Code:
Code, Fiddle

Groot om op een touchscreen te proberen
Fiddle groot (test)

Ik heb geprobeerd om even een sleep in te bouwen. Werkte niet
e.stopPropagation();
e.preventDefault();
Lukt niet want dan kan ik niet meer doorklikken

8)7 kortom, de touch die al geweest is werkt door op de link die ik nog laat zien :( . Iemand een idee wat mij verder in de richting kan brengen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Niet onmousedown gebruiken maar onclick. Geldt ook voor je canvas trouwens: gewoon onclick gebruiken. Dat is op touchdevices gewoon transparant en werkt dus ook.

Overigens stellen we het op prijs als je je code niet alleen op jsFiddle zet zodat mensen die dit topic later terugvinden er ook nog wat aan hebben, zelfs als jsFiddle je code offline heeft getrokken. ;)

[ Voor 91% gewijzigd door NMe op 01-11-2013 19:08 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • zoutepopcorn
  • Registratie: September 2007
  • Laatst online: 24-05-2023
Bedankt voor de reactie.

Het is blijkbaar niet op te lossen in Fabricjs zelf. Dus maar een functie voor als er op het canvas wordt geklikt... Hij kijkt of er een icoon is aangeklikt en daarna opent het menu.

Heb heb nu maar zo opgelost:


HTML:
1
<div id="divMenu" onclick="displayMenu()"> <canvas id="menu" height="0" width="0"></canvas></div>


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function displayMenu() {
    // Only display menu when a item is clicked
    if(itemClicked) {
    itemClicked = false;
    document.getElementById("overlay").style.display = "";
    } 
}

function clickIcon(e) {
    selIcon = e.target.id;   
    itemClicked = true;
}

// Fabricjs javascript required code...
menu.on({
  'object:selected' : clickIcon
});