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

前言:

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

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

一、实现思路

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

所以,我的思路是:

  1. 声明一个变量flag的默认值为false,用于记录文件是否已经打开过;
  2. 打开文件的时候设置缓存变量flagtrue
  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页面与小程序双向通信,调用微信小程序预览文件功能 中预览文件功能的细节补充。

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

相关推荐
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
微信开发api2 天前
微信iPad协议怎么用?基于协议的二次开发实践
微信·机器人·ipad
拖孩2 天前
代码我能全交给 AI,流量主这 500 个访客它一个都替不了我
前端·后端·微信小程序
wechatbot8883 天前
极客互动企业微信 SCRM 自动运营平台效果实测
java·微信·企业微信·rpa
懂软件的胡子个哥3 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发
微信开发api3 天前
微信机器人接口:REST API vs WebSocket 选型建议
微信·机器人·ipad
极客互动API3 天前
极客互动-企业微信基于外部API接口实现AI客服自动接管外部联系人消息收发
java·微信·企业微信·ai编程·rpa
随性而行3603 天前
企业微信二次开发实战:基于企业微信API构建自动化营销触达系统
微信
甜到心里的蛋糕3 天前
如何用企业微信实现让微信收到通知实时通知
服务器·python·微信小程序·fastapi
2601_963870203 天前
基于springboot的综合网上购物商场系统
微信小程序·小程序·课程设计