2012-10-24 14 views
7

Un po 'di contesto: sto lavorando a un'app mobile basata su HTML5 con una funzione di completamento automatico che si interrompe su Android a causa di un bug in setSelectionRange: http://code.google.com/p/android/issues/detail?id=15245 Per questo motivo, posso t manipolare direttamente il testo nel campo di testo come si farebbe normalmente. Per ovviare a questo problema, stavo pianificando di attivare manualmente diversi eventi chiave per simulare l'utente che preme i tasti sulla tastiera virtuale di Android.Simula esattamente la pressione di un utente in Javascript

Tutte le soluzioni che ho trovato in Is it possible to simulate key press events programmatically? e Firing a Keyboard Event in JavaScript attivano semplicemente l'evento senza effettivamente creare alcun input di testo.

C'è un modo per simulare l'intero evento keypress, incluso l'input di testo, utilizzando javascript?

Aggiornamento: fisso (o quasi)

ho avuto intorno a questo problema utilizzando scrivendo un plugin per Trigger (il wrapper stiamo usando) che spara manualmente gli eventi della tastiera Android a livello nativo. È ospitato qui: http://bit.ly/RiJqrM se qualcun altro è interessato.

Ancora un altro aggiornamento:

ulteriore frustrazione e successivi test mi ha portato cerchio completo, e si scopre il bug di Android di cui sopra potrebbe essere stato un po 'di una falsa pista. La ragione per cui il mio caret si è comportato in modo strano è in realtà dovuta a una combinazione di autocompletamento nativo di Android e al fatto che jQuery focus() non funziona affatto su Android (auto promozione spudorata): Android JQuery focus() workaround

risposta

3

No. La maggior parte dei browser non funziona consenti allo script di simulare completamente un keypress: puoi attivare l'evento ma il comportamento del browser associato (aggiornamento del valore di un input, modifica del contenuto di un elemento contenteditable, spostamento del punto di inserimento, ecc.) non avverrà.

+0

Questo è ciò che si sospetta, grazie. Attualmente sto lavorando a una soluzione alternativa utilizzando il bridge nativo trigger.io e aggiornerò la mia domanda con i risultati. –

Problemi correlati