当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问小程序, 如何让物理返回键跟自定义导航返回的页面 保持一致?

曾元忠
2024-05-07

因为一些业务需求, 我无法在onUnload里去写具体返回路径, 所以我使用了自定义导航。

wx.reLaunch({    url: '/pages/swim/index'})

但是物理返回键依然是走的返回上一级, 除了onUnload里去写, 还有什么解决思路或方法吗?

因为一些其他原因我必须使用reLaunch。也没法在onUnload实现。

共有2个答案

张啸
2024-05-07

为啥必须使用 reLaunch 啊,关闭其他页面,那不应该把那些该关闭的页面在路由的时候就是用 redirectTo 关闭掉嘛?其实应该设计一下页面路由栈。

反正据我所知现在是没有办法拦截物理返回和滑动返回。官方的答复是这样的:

会有某些开发者,阻止用户退出某些页面,以达到一些xxx目的,所以官方为了防止开发者滥用,并不打算开放该功能。

或者你一定要做,可以看看微信开发者社区的一些相关文章?

  • 【交互方案】针对不小心触发返回按钮的交互 | 微信开放社区
锺离边浩
2024-05-07

对于微信小程序来说,物理返回键的默认行为是返回到上一页。如果你想要改变这个行为,使物理返回键与你的自定义导航保持一致,你可以尝试在 onBackPress 生命周期函数中处理。

onBackPress 是微信小程序提供的,当用户点击左上角返回按钮或安卓用户点击物理返回键时会触发的事件。你可以在这个函数中调用你的自定义返回逻辑。

以下是一个可能的解决方案:

Page({  onBackPress: function() {    // 你的自定义返回逻辑    wx.reLaunch({      url: '/pages/swim/index'    });    // 阻止默认返回行为    return true;  },  // 其他函数...});

在这个示例中,当用户点击物理返回键时,会触发 onBackPress 函数。在这个函数中,我们调用了 wx.reLaunch 来实现自定义的页面跳转逻辑,并返回 true 来阻止默认的返回行为。

请注意,这种方式会改变所有物理返回键的行为,如果你只想改变特定页面的行为,你可能需要在 onBackPress 函数中添加一些条件判断。

另外,这种方法可能并不适合所有情况,特别是当你的应用有复杂的页面导航逻辑时。在这种情况下,你可能需要寻找更复杂的解决方案,例如使用全局的状态管理来跟踪用户的页面导航历史,然后根据这个历史来决定物理返回键的行为。

 类似资料:
  • 本文向大家介绍详解微信小程序胶囊按钮返回|首页自定义导航栏功能,包括了详解微信小程序胶囊按钮返回|首页自定义导航栏功能的使用技巧和注意事项,需要的朋友参考一下 项目代码:https://github.com/Shay0921/header-navbar.git 在小程序中,从转发出来的小程序消息卡片进入,因为页面栈中只有一个,所以不会出现返回按钮,对于一些电商平台来说,当商品被转发后会很影响客户查

  • 本文向大家介绍html5点击返回键怎样不让它返回上一页?相关面试题,主要包含被问及html5点击返回键怎样不让它返回上一页?时的应答技巧和注意事项,需要的朋友参考一下 参考资料

  • 问题内容: 我正在寻找一种干净的方法,当找不到请求的资源时,在Spring 4中返回自定义的404错误页面。对不同域类型的查询应导致不同的错误页面。 这里有一些代码可以表明我的意图(Meter是一个域类): 我想象有几种解决问题的方法。首先,有可能创建像 然后使用异常处理程序呈现自定义错误页面(可能包含指向仪表列表的链接或适当的链接)。 但是我不喜欢使用许多小异常来污染我的应用程序。 另一种可能性

  • 这里有一些代码来表明我的意图(Meter是一个域类): 我想出了几种处理这个问题的方法。首先,有可能创建类似 然后使用异常处理程序来呈现自定义的errorpage(可能包含到仪表列表的链接或任何合适的内容)。 但是使用这个解决方案,我必须重复许多控制器方法的前5行(如edit、delete)。 有没有一种优雅的方法来防止重复这些行很多次?

  • 我有一个服务人员,如果您处于脱机状态,我希望返回脱机页面。我意识到你必须先缓存离线页面,所以我这样做了。当我将其缓存,并使用chrome开发工具将网络限制为脱机时,它显示了默认的脱机页面!我不知道脱机时如何打开页面。我在chromebook上,如果这能改变什么的话。这是我的代码(顺便说一句,我对服务人员是全新的):

  • 有没有一种聪明的方法可以回到Angular 2的最后一页? 像这样的东西 例如,C页有一个返回按钮, > A页- 第B页- 路由器是否有此历史信息?

  • 改变json输出策略 默认使用阿里的fastjson进行json输出 JSON.toJSONString(obj) 如果要更换输出策略,操作方式如下: @Override protected void initApiConfig(ApiConfig apiConfig) { ... // 自定义json格式输出,将null字符串变成"" apiConfig.setJson

  • 网关默认对业务结果进行合并,然后返回统一的格式。 针对alipay.story.find接口,微服务端返回结果如下: { "name": "白雪公主", "id": 1, "gmtCreate": 1554193987378 } 网关合并后,最终结果如下 { "alipay_story_find_response": { "msg": "Succe