gpt4 book ai didi

javascript - 如何禁用浏览器功能

转载 作者:行者123 更新时间:2023-12-03 11:26:51 25 4
gpt4 key购买 nike

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

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

但是,即使我单击重定向页面的按钮,也会调用此函数。

最佳答案

如果您只是想收到警报,并了解用户最终拥有控制权并且可以绕过您的警报,那么请执行您正在做的操作,但使用一个标志,在您导航且不想要时禁用它警报。例如:

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

然后在链接/按钮/任何将用户移动到您不希望弹出的内容上的点击处理程序中:

warnWhenLeaving = false;
<小时/>

在您提出的评论中:

can i know that what user has clicked when alert is generated with this function. That is can i know what user has clicked (leave this page/stay on page)

答案是:有点,但并非如此;几乎可以肯定,不要尝试这样做会更好。

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

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

Live Example

所以理论上,如果你接到回电,他们就会留下来;如果您看到 unload 事件,则表明他们离开了。 (请注意,在 unload 事件中您可以执行的操作非常很少。)

我已经在当前的 Chrome、当前的 Firefox、IE8 和 IE11 上尝试过:它适用于所有这些。任何人都在猜测它是否会在其中任何一个的下一个版本中发挥作用。它是否在移动浏览器上可靠地工作是您必须测试的事情,并且可能会再次改变。

关于javascript - 如何禁用浏览器功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com