JS ev.preventdefault()切换到另一个窗口后停止工作

发布于 2025-02-04 19:42:38 字数 874 浏览 1 评论 0原文

在以下功能中,我尝试通过键阻止滚动,并且效果很好,但是如果我切换到另一个窗口并切换回浏览器窗口,则EV.PreventDefault()函数将不再起作用。

  • KEY_NEXT()和KEY_LAST()函数仍然触发,
  • 我正在使用Windows 10和Chrome
    function start(){
        window.addEventListener("keyup",(ev)=>{

            if(ev.code === "ArrowUp"){
                ev.preventDefault();
                key_last();

            }
            else if(ev.code === "ArrowDown"){
                ev.preventDefault();
                key_next();
 
            }
            else if(ev.code === "ArrowLeft"){
                ev.preventDefault();
                key_last();

            }
            else if(ev.code === "ArrowRight"){
                ev.preventDefault();
                key_next();
            }
            else if(ev.code === "Space"){
                ev.preventDefault();
            }
        });
    }

In the following function I try to block the scrolling by keys and it works fine, but if I switch to another window and switch back to the browser window, the ev.preventDefault() function doesn't work anymore.

  • The key_next() and key_last() functions are still triggered
  • I'm using Windows 10 and chrome
    function start(){
        window.addEventListener("keyup",(ev)=>{

            if(ev.code === "ArrowUp"){
                ev.preventDefault();
                key_last();

            }
            else if(ev.code === "ArrowDown"){
                ev.preventDefault();
                key_next();
 
            }
            else if(ev.code === "ArrowLeft"){
                ev.preventDefault();
                key_last();

            }
            else if(ev.code === "ArrowRight"){
                ev.preventDefault();
                key_next();
            }
            else if(ev.code === "Space"){
                ev.preventDefault();
            }
        });
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自控 2025-02-11 19:42:38

我将其添加到我的start()函数中,现在即使我切换Windows也可以工作。

window.addEventListener("keydown",(ev)=>{
        if(ev.code === "ArrowUp" || ev.code === "ArrowDown" || ev.code === "ArrowLeft" || ev.code === "ArrowRight" || ev.code === "Space"){
            ev.preventDefault();
        }
    });

    window.addEventListener("keypress",(ev)=>{
        if(ev.code === "ArrowUp" || ev.code === "ArrowDown" || ev.code === "ArrowLeft" || ev.code === "ArrowRight" || ev.code === "Space"){
            ev.preventDefault();
        }
    });

I added this into my start() function, now it works even if I switch windows.

window.addEventListener("keydown",(ev)=>{
        if(ev.code === "ArrowUp" || ev.code === "ArrowDown" || ev.code === "ArrowLeft" || ev.code === "ArrowRight" || ev.code === "Space"){
            ev.preventDefault();
        }
    });

    window.addEventListener("keypress",(ev)=>{
        if(ev.code === "ArrowUp" || ev.code === "ArrowDown" || ev.code === "ArrowLeft" || ev.code === "ArrowRight" || ev.code === "Space"){
            ev.preventDefault();
        }
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文