如何禁用浏览器功能

How to disable browser feature

本文关键字:功能 浏览器 何禁用      更新时间:2023-09-26

我正在开发一个项目,用户可以在其中获得一个确认页面。我希望用户不要点击返回或关闭选项卡或重新加载。现在,我要么需要禁用浏览器功能,要么需要返回按钮、选项卡关闭事件,或者将事件重新加载到java脚本,这样我就可以采取必要的步骤来防止数据丢失。我用过这个:

window.onbeforeunload = function() 
{
     return "Try This"; 
};

但是,即使我点击了重定向页面的按钮,这个也会被调用。

如果您只想获得警报,并且知道用户最终可以控制并绕过您的警报,那么请执行您正在执行的操作,但在导航时使用一个标志,该标志会在您不想要警报时禁用它。例如:

var warnWhenLeaving = true;
window.onbeforeunload = function() {
    if (warnWhenLeaving) {
        return "your message here";
    }
};

然后在链接/按钮/任何移动用户的东西上的点击处理程序中,你不希望这个弹出:

warnWhenLeaving = false;

在你问的一条评论中:

我能知道当使用该功能生成警报时,用户点击了什么吗。那就是我能知道用户点击了什么吗(离开这个页面/停留在页面上)

答案是:有点,但不是真的;几乎可以肯定的是,你最好不要尝试。

但是:如果你看到onbeforeunload函数运行,那么你就知道用户正在离开页面,浏览器很可能会向他们显示你的消息。我熟悉的浏览器像alert一样处理弹出窗口:当弹出窗口存在时,页面上的所有JavaScript代码都会被阻止。因此,如果你通过setTimeout安排回调,如果他们离开,你就不会得到回调,而如果他们留下,你会得到回调:

window.onbeforeunload = function() {
  if (warnWhenLeaving) {
    setTimeout(function() {
      display("You stayed, yay!");
    }, 0);
    return "No, don't go!";
  }
};

实际示例

因此,理论上,如果你得到回调,他们会留下来;如果您看到unload事件,他们就会离开。(请注意,在unload事件中可以做的事情非常少。)

我已经在当前的Chrome、Firefox、IE8和IE11上尝试过了:它适用于所有这些。这是否会在他们中的任何一个的下一个版本中起作用是任何人的猜测。它在移动浏览器上是否可靠工作是你必须测试的,而且可能会再次改变。