【问题标题】:Disable ALT+F4, yes I know it isn't recommended禁用 ALT+F4,是的,我知道不推荐
【发布时间】:2013-11-12 19:51:03
【问题描述】:

我需要一个可以禁止用户使用 ALT+F4 关闭的 JavaScript 脚本。我到处都看过,但只是每个人都说不建议这样做。

可能甚至不可能,如果不是,我只需要检测用户何时以这种方式退出并将其记录到数据库中。

这是我当前的脚本,它检测用户是否按下 ALT 或 F4,但我无法取消该按键。有没有办法让浏览器认为用户也按下了另一个键,所以组合将是 ALT + G + F4 例如,这会破坏 ALT + F4 组合?

//Run on keydown, disable user from quiting via ALT+F4
document.onkeydown = function(evt) {
    evt = evt || window.event;
    //Get key unicode
    var unicode = evt.keyCode ? evt.keyCode : evt.charCode;

    //Check it it's ALT or F4 (115)
    if (unicode == 115 || evt.altKey == 1)
    {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
};

【问题讨论】:

  • 不可能。 JavaScript 在浏览器中被沙盒化,不能阻止用户与他的窗口管理器或操作系统进行交互。 (对此我非常感谢。)(另外,Alt-F4 并不是关闭某些东西的唯一方法,而且无论如何只适用于 Windows 环境。)
  • @David -- 还没有... 邪恶的想法
  • 您最好在 window.unload() 事件上执行您的退出脚本 JavaScript,该事件在用户关闭窗口且不阻止默认机制时触发 - 或者,保持 Cookie 中的会话以匹配当此人重新登录时,如果不匹配。退出。
  • 您是否只需要为 Alt+F4 或 1001 种关闭窗口的方法中的任何一种这样做?
  • 您是否还要检测何时断电、网络连接中断或计算机崩溃?如果没有,你应该想一个更好的方法来检测用户是否断开连接。

标签: javascript


【解决方案1】:

该关键事件(我猜在大多数操作系统上)由操作系统在发送到浏览器之前处理,因此取消浏览器内的事件无济于事 - 即使它是在内部执行的 Javascript浏览器的 UI,不仅仅是当前文档。

因此 - 你试图做的事情无法完成。

【讨论】:

  • 好的,我只会检测用户何时重新启动窗口。谢谢。
【解决方案2】:

可以通过以下方式防止导致窗口关闭:

window.onbeforeunload = funcRef

我认为登陆这里的读者可能希望被提醒这一点(就像我一样)。

相关详情见 Jquery prevent window closing

【讨论】:

    【解决方案3】:

    尝试使用下面的代码:

    window.webContents.on("before-input-event",(event,input)=>{
    if(input.code=='F4'&&input.alt)event.preventDefault();});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多