JS ev.preventDefault() stops working after switching to another window

Viewed 28

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();
            }
        });
    }
1 Answers

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();
        }
    });
Related