微信小程序|小程序如何判断openDocument被关闭

前言:

在微信小程序中,预览文件用的都是wx.openDocument()方法。现在有个需求,需要在文件关闭后调用一个方法。那么,如何知道文件已经被关闭了呢?

此文将对此问题提供思路和方案。

一、实现思路

因为小程序没有监听openDocument关闭事件的方法。

所以,我的思路是:

  1. 声明一个变量flag的默认值为false,用于记录文件是否已经打开过;
  2. 打开文件的时候设置缓存变量flag为true;
  3. 页面onShow的时候,获取缓存flag的值并开始判断;
  4. 当flag有值并且为true的时候,处理自己的逻辑,同时将flag恢复默认值false。

二、实现方案

按照思路步骤依次如下图所示:

下面附上相关的所有代码:

js 复制代码
Page({
  data: {
    flag: false,
  },
  
  onLoad: function (options) {
    this.wxDownLoad(options); // 因为我的需求是页面onLoad的时候就打开文件
  },
  
  wxDownLoad(options) {
    let that = this;
    wx.showLoading({
      title: '正在打开...',
    });
    wx.downloadFile({
      url: options.url,
      filePath: wx.env.USER_DATA_PATH + "/" + decodeURIComponent(options.name), // 设置自定义标题
      success: (res) => {
        if (res.statusCode === 200) {
          const filePath = res.filePath;
          wx.openDocument({
            showMenu: true,
            filePath: filePath,
            success: function (res) {
              that.setData({ flag: true })
              wx.hideLoading();
            },
          })
        }
      }
    })
  },
  
  onShow: function () {
    if (this.data.flag) {
      this.setData({ flag: false })
      wx.navigateBack();
    }
  },
})
·

三、需求拓展

备注:

我这边的具体需求是这样的:
微信小程序webview内嵌的H5页面中,点击H5的文件能在小程序中打开。

为了实现这个需求,在H5与微信小程序通信时,设计点击H5中的文件跳转到小程序的一个空白页,然后在空白页onLoad的时候,进行打开文件的操作。

但是这样的话,在关闭文件时会显示空白页,影响用户体验,所以需要在关闭文件的时候,自动将空白页关闭,直接显示内嵌的H5页面。

也就是只要判断文件已经被关闭,然后调用wx.navigateBack()即可实现。

另:此文也可作为上一篇文章---------微信小程序中webView的H5页面与小程序双向通信,调用微信小程序预览文件功能 中预览文件功能的细节补充。

以上,希望对大家有帮助!

相关推荐
多客:duokelijie13 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
玩泥巴的21 小时前
把AI编码从自由生成到受约束声明:微信生态 .NET SDK 中用源生成器压制 AI 编码幻觉的工程实践
微信·.net·aot·roslyn
计算机毕设定制辅导-无忧学长2 天前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统
连接池3 天前
Java 微信二次开发2个坑:多实例回调路由 + 消息分发策略(附 Spring Boot 代码)
微信
阿砾3 天前
微信群消息回调处理:乱序、自己发的消息、真实发送者提取
微信
拖孩3 天前
流量主门槛从 500 降到 100,我的小程序上线 18 小时够到了线
前端·后端·微信小程序
云-缩影3 天前
做微信小程序,自建服务器还是用云托管:技术选型对比
服务器·微信小程序·小程序
玩泥巴的3 天前
源生成与 AOT 就绪的微信生态 .NET SDK:结构、能力边界与 API 定位方法
ai·微信·.net·agent·aot·roslyn
极限挑战哥4 天前
共享电单车联营平台分账架构实践:二清合规与自动分账零人工方案
java·大数据·人工智能·微信小程序·架构·微信公众平台
玩泥巴的4 天前
可能是最现代化的微信生态 .NET 服务端 SDK
ai·微信·.net·aot