为了账号安全,请及时绑定邮箱和手机立即绑定

React.JS 仅在关闭选项卡/浏览器时确认,而不是在刷新时

React.JS 仅在关闭选项卡/浏览器时确认,而不是在刷新时

萧十郎 2022-05-26 16:47:02
是否只有在关闭选项卡/浏览器时才能获得警报/确认?每次我刷新页面/收到警报时,都会出现此确认信息,我不希望它那样做。我创建了一个布尔状态变量——如果它是真的——确认应该弹出,假的——不应该:render(){        window.addEventListener("beforeunload", (ev) =>         {            if(this.state.hasChanged===true)           {                ev.preventDefault();                return ev.returnValue = 'Are you sure you want to close?';           }}我也试过:render(){        window.addEventListener("beforeunload", (ev) =>         {              console.log(performance)            if((performance.navigation.type!==1)&&(this.state.hasChanged===true))            {                ev.preventDefault();                return ev.returnValue = 'Are you sure you want to close?';        }        });}
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

@Davo 就像他说的那样,操纵 localStorage 可能是最好的选择。因此,如果用户来到您的页面,请添加您想要的任何 localStorage 项目。您甚至可以以时间格式执行此操作,以便您可以让它过期。您还可以在您呈现的每个页面上验证令牌,以确保用户拥有令牌。因此,如果用户具有您创建的相同令牌,那么您可以从那里操纵您的状态。希望这可以帮助!



查看完整回答
反对 回复 2022-05-26
?
jeck猫

TA贡献1909条经验 获得超7个赞

我想我理解这个问题。如果您试图在用户离开页面之前显示一条消息,您可以使用在名为 onbeforeunload 的窗口对象中找到的事件。您可以在 MDN 上找到该文档(链接如下)。我希望这会有所帮助。

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

这可以用来制作那些“你确定要离开”的消息。

因此浏览器不会意外拒绝您可以使用 Toast 或 Lightbox 的警报。

-祝你好运!


查看完整回答
反对 回复 2022-05-26
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

从这个答案

beforeunload 的工作方式,您无法区分天气是页面刷新还是浏览器关闭。beforeunload 这是一个非常令人困惑的事件,请避免使用它。

因此,对于您正在处理会话的情况,您应该使用会话存储。sessionStorage 对象仅存储一个会话的数据(关闭浏览器选项卡时数据将被删除)。

所以我猜你可以以某种方式操纵会话存储。希望这可以帮助。


查看完整回答
反对 回复 2022-05-26
  • 3 回答
  • 0 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信