如何禁用浏览器功能
How to disable browser feature
我正在开发一个项目,用户可以在其中获得一个确认页面。我希望用户不要点击返回或关闭选项卡或重新加载。现在,我要么需要禁用浏览器功能,要么需要返回按钮、选项卡关闭事件,或者将事件重新加载到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上尝试过了:它适用于所有这些。这是否会在他们中的任何一个的下一个版本中起作用是任何人的猜测。它在移动浏览器上是否可靠工作是你必须测试的,而且可能会再次改变。
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 使用(navigator.geolocation)检测浏览器功能错误
- 我想用Javascript网站在开放的Chrome浏览器上执行功能
- 对于如何在没有modernizr的情况下用边界半径的功能检测检查来替换我的旧浏览器检查
- 如何(功能)检测浏览器是否支持WebM alpha透明度
- 用户使用浏览器时SPA中的问题's的后退或刷新功能
- angular应用程序中的浏览器功能检测:使用服务、指令、控制器
- 在浏览器上显示实习运行程序功能测试的结果
- 是否有用于CSS浏览器支持新功能的javascript解决方案
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- 浏览器同步摄像头加速视频播放不是一个功能
- 跨浏览器javascript下载功能
- 从用户脚本空间重新定义Firefox中的原生浏览器功能
- 默认浏览器's的拖放功能
- 在没有额外功能的所有现代浏览器中居中显示JavaScript窗口
- 当有人点击浏览器关闭按钮时,使用JavaScript或ajax功能
- 选项卡分组和选项卡着色:如何将此功能应用于从我的网页打开的选项卡,而不考虑浏览器
- 具有辅助功能的浏览器是否支持CSS或JavaScript
- 浏览器非桌面时禁用Javascript功能
- 在不同浏览器中禁用所有表单数据中的自动完成功能