防止在密码字段中触发按键事件

Prevent keypress events from firing in password fields

我正在编写一个脚本来捕获给定 HTML 页面中的所有按键。

现在我有一个基本的工作脚本

document.onkeypress = function(event){
    var evtobj=window.event? event : e;
    if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey)
        console.log("'Alt', 'Ctrl', or 'Shift' key pressed");
    console.log(String.fromCharCode(evtobj.keyCode));
}

现在,我想防止此函数在密码字段上触发事件时触发。

即使事件触发,我应该如何继续识别 element 是一个 input 框,而 typepassword

我猜应该使用 event.target 来完成。

<input type='password' name='password'/>

document.onkeypress = function(event){
    var containerName = event.target.name;
    if (containerName !== 'password')
    {
        var evtobj=window.event? event : e;
        if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey)
            console.log("'Alt', 'Ctrl', or 'Shift' key pressed");
        console.log(String.fromCharCode(evtobj.keyCode));
    }
 }

这应该可以解决您的问题

您也可以使用 event.target.type 检查输入的类型,这将 return 输入的类型。

<input type="password">
document.onkeypress = function(event){
  if(event.target.type != 'password'){
    var evtobj=window.event? event : e;
    if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey)
        console.log("'Alt', 'Ctrl', or 'Shift' key pressed");
    console.log(String.fromCharCode(evtobj.keyCode));
  }
}