2016-05-16 2 views
1

Donc, ce que je fais est lorsque la touche "e" est pressé sur un certain site Web puis il appuiera sur la touche "w" plusieurs fois. J'ai fait des tests pour voir si le script arrive au point où il appuie sur "e" avec une alerte(); et ça a marché, mais ça ne déclenche pas la touche "w".Appuyez plusieurs fois sur une touche différente lorsque vous appuyez sur une touche?

// @run-at  document-end 
// ==/UserScript== 

(function() { 
var amount = 6; 
var duration = 50; //ms 

var overwriting = function(evt) { 
    if (evt.keyCode === 69) { // KEY_E 
     for (var i = 0; i < amount; ++i) { 
      setTimeout(function() { 
       alert("Key e is pressed"); /* This works */ 
       window.onkeydown({keyCode: 87}); // KEY_W /* This doesn't */ 
       window.onkeyup({keyCode: 87}); 
      }, i * duration); 
     } 
    } 
}; 
window.addEventListener('keydown', overwriting); 
})(); 
+0

double possible de [Comment déclencher l'événement en JavaScript?] (Http://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript) – Eduardo

Répondre

1

Vous appelez directement l'écouteur d'événement hérité. En fait, il sera exécuté, s'il existe. Toutefois, cela ne peut pas déclencher un écouteur d'événement enregistré (par addEventListener()). Pour ce faire, déclenchez un événement vers la cible souhaitée (par exemple, une fenêtre) et laissez le navigateur faire autre chose.

window.dispatchEvent(new KeyboardEvent('keydown', 
{ 
    'view': window, 
    'which': 87, 
    'keyCode': 87, 
    'bubbles': true, 
    'cancelable': true 
}); 
+0

Désolé, je suis peu confus .. alors comment est-ce que je l'éditerais de sorte que quand "e" est pressé, "w" sera déclenché plusieurs fois? – Intrinza

+0

Ceci est le remplacement de 'window.onkeydown ({keyCode: 87});'. Est-ce un script d'éjection de masse Agar? :) –

+0

Il devrait faire. 50 ms pourraient être trop courts. J'ai ajusté 80 ms. –