2016-02-05 24 views
5

Sto cercando un modo per simulare una tastiera (come suggerisce il titolo). Ho guardato intorno e ho trovato principalmente queste 2 SO domande:Simulare la pressione della tastiera in un modo non deprecato?

Il problema con questi sono che entrambi utilizzano l'evento KeyboardEvent.initKeyboardEvent() che secondo MDN è deprecato . Esiste un modo diverso di realizzare la stessa cosa senza quella funzione deprecata?

Mi piacerebbe saperlo perché sto creando uno script per YouTube utilizzando l'estensione TamperMonkey di Chrome. Questo script, quando viene premuto [spazio], attiva K. K è il pulsante di riproduzione/pausa di attivazione/disattivazione di YouTube. Ho l'ascoltatore [spazio] perfettamente funzionante con il codice qui sotto:

document.addEventListener("keydown", function(e) { 
    if(e.keyCode==32) { 
     e.preventDefault(); 
    } 
}, false); 

Anche io vedo per un approccio puro JavaScript.

+3

Possibilmente utile. Da MDN: "Le applicazioni Web dovrebbero utilizzare il costruttore anziché questo se è disponibile." https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent – CollinD

+1

Puoi spiegare COSA stai tentando? Ciò comporterà risposte migliori – mplungjan

+0

@mplungjan Sto tentando di, quando un utente esegue un'azione specifica (fare clic su un pulsante o simile), questa funzione verrà attivata per far credere alla pagina che sia stato premuto un tasto specifico sulla tastiera. – Jaketr00

risposta

1

Se lo fai con jQuery costruisci il tuo evento.

https://stackoverflow.com/a/3368599/3257830

Se si desidera creare un evento, si inizializza l'oggetto poi inviare l'evento.

https://developer.mozilla.org/en-US/docs/Web/API/Event/Event

document.addEventListener("keypress", function(e) { 
 
    alert(e.which); 
 
}); 
 
var e = new Event("keypress"); 
 
e.which = 65; 
 
e.keyCode = 65; 
 
document.dispatchEvent(e);
<p id="r">Alerts on event</p>

+0

Qualcuno potrebbe spiegare perché questo è stato down-votato? Non difendo la risposta, sto solo cercando di imparare. – ketchupisred

+2

Vedere la cronologia delle modifiche. I downvotes sono probabilmente da quando la risposta era completamente irrilevante alla domanda –

+0

Questo funziona alla grande, tranne quando aggiungo 'if (e.keyCode == 65)' all'interno del listener di keypress, questo sembra non essere attivato. Lo verificherò nella mia sceneggiatura e vedrò se funziona ancora. EDIT: Non sembra funzionare, fallisce silenziosamente, e 'event.preventDefault()' dovrebbe impedire alla pagina di scorrere quando viene premuto '[spazio]', ma con lo script sopra non lo impedisce più – Jaketr00