2016-08-21 2 views
0

Dies ist mein zusätzlicher Code für reddit. Es hilft mir, es viel schneller zu durchsuchen. Die Idee basiert auf den Tastenkombinationen von 4chan. 'N' Taste für die nächste Seite und 'B' für die vorherige Seite.Wie verhindert man, dass der Keydown Event Listener während der Eingabe in ein Textfeld hört?

window.addEventListener("keydown", checkKeyPressed, false); 
function checkKeyPressed(e){ 
    switch(e.keyCode){ 
     case 66: 
      window.location = document.querySelector('a[rel="nofollow prev"]').href; 
      break; 
     case 78: 
      window.location = document.querySelector('a[rel="nofollow next"]').href; 
      break; 
     default: 
    } 
} 

Mein Problem ist, auch das Ereignis tritt auf, wenn ich in ein Textfeld mit den Worten ein, das in ihm ‚n‘ oder ‚b‘ hat. Wie verhindere ich das, wenn ich mich auf ein Textfeld konzentriere?

+4

prüfen 'e.target' ? – zerkms

+1

Sie können auch eine Klasse auf zu ignorierende Elemente setzen und * e.target.className * überprüfen. – RobG

Antwort

2

Wie bereits erwähnt, indem zerkms: Ich bin nicht sicher, ob Sie auch Textbereich erfassen möchten, sollten Sie den Code weiter verbessern, wenn Sie Unterstützung benötigen für einen solchen Fall ...

window.addEventListener("keydown", checkKeyPressed, false); 
function checkKeyPressed(e){ 
    var elem = e.target; 
    var type = elem.getAttribute("type"); 
    if(type!='text'){ 
    switch(e.keyCode){ 
     case 66: 
      //window.location = document.querySelector('a[rel="nofollow prev"]').href; 
      alert("case 66"); 
      break; 
     case 78: 
      //window.location = document.querySelector('a[rel="nofollow next"]').href; 
      alert("case 78"); 
      break; 
     default: 
    } 
    } 

} 
+0

Funktioniert wie ein Charme. Vielen Dank. Verkürzte es weiter, indem du var nicht eingibst und type = e.target.getAttribute ("type") 'stattdessen eintippst. – kittenparry

Verwandte Themen