javascript - js为什么不能阻止ctrl w关闭事件?

查看:317
本文介绍了javascript - js为什么不能阻止ctrl w关闭事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在 window 上监听keypress事件
当触发keydown事件时,判断ctrlKey是否为true,keyCode是否为87(w
如果是,阻止默认事件。
但是似乎并不能阻止窗口关闭事件

        //测试屏蔽ctrl+w 
        $(window).on('keydown',function(event){
            if(event.ctrlKey&&event.keyCode==87){
                event.preventDefault();
                event.returnValue = false;
                alert("已阻止关闭事件");
                return false;
            }
            if(event.ctrlKey&&event.keyCode==65){
                event.preventDefault();
                alert("已阻止关闭事件");
                return false;
            }
        });

下面那一段是测试其他组合键是不是能用
经过测试发现ctrl+a可以拦截,但是ctrl+w并不能拦截
通过打断点的方式发现,如果按了ctrl+w,似乎浏览器并没有触发keydown事件就直接关闭了页面
请问有什么解决方法么?

navigator.userAgent:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36"

==============================
刚刚去测试了一下
ctrl + w在chrome浏览器中,不会触发任何监听事件
如果说为了安全或者为了用户主观意愿,在按下ctrl + w 以后一定要关闭当前标签页
为什么不做成,事件依旧触发,但是强制执行关闭命令。
类似于 onbeforeunload

解决方案

一开始搜没搜到才提问的
后来又去搜了一遍
只找到这些issue
https://bugs.chromium.org/p/c...
https://bugs.chromium.org/p/c...
https://bugzilla.mozilla.org/...
浏览器不允许监听
ctrl + s,ctrl + w,ctrl + n,ctrl + t
事件。
但是我没找到官方回复。
感觉这种设定很不方便啊。

这篇关于javascript - js为什么不能阻止ctrl w关闭事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆