javascript返回false与默认焦点更改

javascript返回false与默认焦点更改,javascript,html,event-handling,focus,Javascript,Html,Event Handling,Focus,当按下tab键时,我正在寻找防止焦点从输入框逃逸的方法。然后,我找到了几种使用onkeydown事件的方法。因此,由于返回false与同时使用preventDefault()和stoppropagation()具有相同的效果,因此我认为可以使用return false来做同样的事情,但经过测试,结果表明它不能以这种方式工作 <script> function tab( event ) { if ( event.keyCode === 9) { event.preve

当按下tab键时,我正在寻找防止焦点从输入框逃逸的方法。然后,我找到了几种使用onkeydown事件的方法。因此,由于返回false与同时使用
preventDefault()
stoppropagation()
具有相同的效果,因此我认为可以使用
return false
来做同样的事情,但经过测试,结果表明它不能以这种方式工作

<script>
function tab( event ) {

    if ( event.keyCode === 9)
    {
event.preventDefault(); //- focus doesn't change

        }
}
</script>
<input onkeydown="tab(event);">

功能选项卡(事件){
如果(event.keyCode===9)
{
event.preventDefault();//-焦点不变
}
}
上述代码按预期工作;按下tab键时,焦点不会改变

<script>
function tab( event ) {

    if ( event.keyCode === 9)
    {
return false; //- focus changes

        }
}
</script>
<input onkeydown="tab(event);">

功能选项卡(事件){
如果(event.keyCode===9)
{
返回false;//-焦点更改
}
}
对于上述代码,按下tab键时焦点会改变

谁能给我解释一下原因吗


已添加

<script>
 function tab( event ) {

    if ( event.keyCode === 9)
    {
event.preventDefault();
event.stopPropagation();//- focus not changes

        }
}
</script>
<input onkeydown="tab(event);">

功能选项卡(事件){
如果(event.keyCode===9)
{
event.preventDefault();
event.stopPropagation();/-焦点未更改
}
}

考虑到
returnfalse
中的
stopPropagation()
影响结果的情况,正如上面所述,我还使用
preventDefault()
stopPropagation()
进行了测试。但是,这也很好,就像单独使用
preventDefault()
一样;结果与
return false
中的结果不同。因此,
returnfalse
似乎比
preventDefault()
stopPropagation()
从Javascript事件处理程序返回false
相当于调用这两个函数,
e.preventDefault
e.stopPropagation

因此,区别在于
preventDefault
只会阻止发生默认事件操作,即链接单击时的页面重定向、表单提交等,
returnfalse
也会停止事件流


OP描述返回false的限制性更小(它使焦点飞走),而简单的
e.preventDefault
如果您所说的是真的,则没有意义,因为返回false本身应该“调用”阻止默认值