2016-08-21 75 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