2016-08-21 32 views
0

这是我对reddit的附加代码。它可以帮助我更快地浏览它。这个想法是基于4chan的键盘快捷键。 'N'键为下一页,'B'为前一页。如何防止keydown事件监听器在输入到文本字段时进行监听?

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: 
    } 
} 

我的问题是,事件也发生时,我键入一个文字字段中有'n'或'b'的文字。当我专注于文本字段时,如何防止它发生?

+4

检查'e.target' ? – zerkms

+1

您也可以将一个类放在元素上以忽略并检查* e.target.className *。 – RobG

回答

2

如前所述出由zerkms:我不知道,如果你也想检测文本区域的,你应该提高,如果进一步需要这样的情况下,支持代码...

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

工程就像一个魅力。谢谢。通过不改变var并键入'type = e.target.getAttribute(“type”)'来进一步缩短它。 – kittenparry