是否可以捕获CTRL + W快捷方式并防止制表符关闭?

Ion*_*zău 5 javascript browser jquery window

$(window).on("keydown", function (e) {
    alert(e.keyCode);
});
Run Code Online (Sandbox Code Playgroud)

W87关键代码。我也知道,e.ctrlKey就是true如果Ctrl在那一刻被按下。

是否可以抓住Ctrl+ W键并阻止制表符关闭?

我试过了:

$(window).on("keydown", function (e) {
    if (e.keyCode === 87 && e.ctrlKey) {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,似乎浏览器快捷方式具有优先权,并且该选项卡已关闭。

我正在寻找一种解决方案:如果无法通过JavaScript进行操作,则可能是浏览器插件可以执行此操作。

Nar*_*pas 5

这不是对原始提问者的回应,而是对通过搜索发现此问题的任何人的回应。这篇文章旨在为您提供返回给老板或客户所需的信息和论据,并告诉他们为什么无法实现这种设计。这个问题的最佳答案提供了 beforeunload 解决方案。祝他们好运!


本项目中的设计规定,一些javascript代码应防止用户关闭网页,而不向用户提供对话框。这有一个关键问题:恶意网站也试图这样做。Web 浏览器开发人员致力于防止恶意网站接管用户体验。因此,没有好的方法可以做到这一点。即使我们找到了解决方案,该解决方案也不会是面向未来的,并且会在浏览器更新时毫无预警地崩溃。

Web 浏览器开发人员为我们提供了一种防止关闭网站的解决方案。该解决方案称为“beforeunload 解决方案”。beforeunload 解决方案将为用户提供一个对话框,该对话框中的文本将具有标准化的样板文本,带有“停留”按钮和“离开”按钮。我们可以向该对话框添加一些文本,但我们无法删除样板文本,也无法更改、移动或以其他方式操作按钮。beforeunload 解决方案不灵活,但它是面向未来的。

使用非标准解决方案(也称为 hack)来规避 beforeunload 提供的内容将使我们陷入恶意网站和 Web 浏览器开发人员之间的军备竞赛,我们将无法保证我们网站的功能将始终如一地运行一天一天的。恶意网站经常会发现新的技巧和窍门来将侵入性广告保留在屏幕上,因此即使我们发现某天允许的内容,下一天也可能会被禁止。互联网上充斥着不再有效的非标准解决方案,网络浏览器开发人员已经关闭了这些解决方案!

从长远来看,beforeunload 解决方案是唯一可行的解​​决方案,我们需要接受最终用户可以出于任何原因使用任何标准键盘快捷键关闭我们的网站,而我们可以防止这种情况的唯一方法是对话框要求他们留在网站上的框。


Rak*_*mar 0

试试这个代码:

$(window).keypress(function(event) {
            event.preventDefault();

            if (event.which == 119 && event.ctrlKey) {
                alert("Ctrl-W pressed");
            }    

    return false;
});
Run Code Online (Sandbox Code Playgroud)