2016-07-14 20 views
5

Mam a webpage using WebGL on a fullscreen canvas.Jak zatrzymać wyłączanie iOS Chrome przy dotykaniu płótna?

mam ten css zatrzymać wybór za

*, *:before, *:after { 
     -webkit-user-select: none; 
     -moz-user-select: none; 
     -ms-user-select: none; 
     user-select: none; 
    } 

I mam ten kod, aby zatrzymać menu kontekstowego

gl.canvas.addEventListener('contextmenu', function(e) { 
    e.preventDefault(); 
    return false; 
}); 

Ale kiedy dotknąć ekranu w Chrome iOS to przygasa. Oto gif problemu, w którym po raz pierwszy pokazano Chrome iOS, a następnie Safari iOS.

Imgur

A oto wersja YouTube

https://youtu.be/1Znsehs-n8E

Uwaga: Zignoruj ​​zacinać graficznej. Moje przechwytywanie zrzutów ekranu zostało pomieszane z jakiegoś powodu.

Zauważ, że w chromie tło miga czasami na szaro. Kiedy w Safari jest ciągle biały. To szaro w chromie, próbuję przestać.

To naprawdę denerwujące, ponieważ po prostu stukanie w ekran kończy się skutecznym miganiem ekranu i jest naprawdę rozpraszające.

Aktualizacja

Zacząłem więc próbuje zaczynając od zera i dodanie części w. Wygląda na to, że nie jest związana z Płótno jest to związane z aukcji na click wydarzeń.

Jeśli mam

gl.canvas.addEventListener('click', function() {}); 

mi uzyskać ściemnianie. Jeśli usunę to, czego nie zrobię. Nieruchomość dla touchstart wydarzeń nie powoduje ściemnianie

Aktualizacja 2

Więc to na pewno nie niezwiązanego z płótna.Jeśli usunąć płótna i po prostu użyć div ale jestem sprawdzanie click uzyskać przyciemnianie

Te ustawienia CSS nie pomogło

* { 
    -webkit-tap-highlight-color: rgba(0,0,0,0); 
    pointer-events: none; 
} 

To działało

elem.addEventListener('touchstart', function(e) { 
    e.preventDefault(); 
}); 

jestem nie wiem, czy istnieje jakieś inne konsekwencje dla preventDefault na touchstart

Odpowiedz

3

TL; DR: To naprawił

elem.addEventListener('touchstart', function(e) { 
    e.preventDefault(); 
}); 

wersja długa: Zobacz aktualizacje do dołu pytanie

1

spróbować tej -webkit-tap-highlight-color: rgba(0,0,0,0);

Jeśli to nie zadziała, spróbuj pointer-events: none;

+0

Dzięki ale żadna z nich pracował. Znalazłem przynajmniej jedną pracę wokół. – gman

+0

To było dla mnie rozwiązanie. Ważne jest, aby pamiętać, że należy to zastosować do kontenera za pomocą zdarzenia click/touch, niekoniecznie W moim przypadku musiałem dodać to do kontenera nadrzędnego, w którym zarejestrowano zdarzenie. Również .. dzięki! – Evildonald