Abbiamo avuto un problema simile, si manifesta con lo zoom del browser ma javascript non riceve alcun evento touch (o talvolta solo un singolo punto prima dell'inizio dello zoom).
Abbiamo trovato queste possibili (ma forse non a lungo termine): soluzioni
1. Disattivare il pizzico/caratteristiche magnetiche quando si utilizza la modalità kiosk
Se queste impostazioni della riga di comando rimangono in Chrome, è possibile effettuare le seguenti operazioni:
chrome.exe --kiosk --incognito --disable-pinch --overscroll-history-navigation=0
- --disable-pinch - disabilita la pinch-to-zoom funzionalità
- --overscroll-storia-di navigazione = 0 - disabilita la funzionalità colpo da navigare
2. Disabilitare zoom pinch utilizzando Chrome bandiere chrome: // flags/# enable-pinch
Passare all'URL chrome: // flags/# enable-pinch nel browser e disabilitare la funzionalità.
La funzione di zoom pinch è attualmente sperimentale ma attivata per impostazione predefinita, il che probabilmente significa che verrà attivato forzatamente nelle versioni future. Se ti trovi in modalità kiosk (e controlli l'hardware/software), potresti probabilmente attivare questa impostazione al momento dell'installazione e quindi impedire l'aggiornamento degli aggiornamenti di Chrome.
Esiste già un ticket della roadmap per rimuovere questa impostazione su Chromium Issue 304869.
Il fatto che il browser reagisca prima di javascript può impedire che sia sicuramente un bug ed è stato registrato allo Chromium bug tracker. Speriamo che venga risolto prima che la funzione sia abilitata in modo permanente o incrociata con le dita, lasciandola come impostazione.
3.Disabilitare tutti i tocchi, whitelist per gli elementi e gli eventi corrispondenti la vostra applicazione
In tutti i test che abbiamo condotto, aggiungendo preventDefault() per il documento per bloccare lo zoom (e tutti gli altri strisciare/touch eventi) in Chrome:
document.addEventListener('touchstart', function(event){
event.preventDefault();
}, {passive: false});
Se si collega la funzionalità basata sul tocco più in alto nel DOM, si attiverà prima che bolla alla chiamata preventDefault() del documento. In Chrome è anche importante includere il parametro eventListenerOptions perché a partire da Chrome 51 a document-level event listener is set to {passive: true}
by default.
In questo modo si disattivano le normali funzioni del browser, ad esempio lo scorrimento per scorrere, probabilmente sarà necessario implementarle manualmente. Se si tratta di un'app kiosk a schermo intero non scorrevole, forse queste funzionalità non saranno importanti.
Grazie per aver ricordato la bandiera. Inizializzarono ma non inserirono un flag per disabilitare. Per un po 'ci fu un problema serio. Abbiamo l'accesso all'hardware, quindi la linea di comando sparare o semplicemente la bandiera ha funzionato alla grande per noi. –