微信公众号监听手机返回键事件jssdk—wx.closeWindow

本文介绍了一种解决在异业联盟活动中,从优惠券包页面返回时重复弹出活动领取页面的问题的方法。通过使用微信jssdk的closeWindow功能,并监听popstate事件,确保用户在返回时能够直接退出到公众号主页,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求场景:

只有扫码初始进入异业联盟活动页,0元券直接弹框领取成功(如图1)

抛出问题:

  • 进入优惠券包后到另一个页面(如图1)
  • 然后按手机返回会回到异业联盟活动页,始终弹出领取活动页面

解决方案:

在优惠券包页面中监听手机返回事件,直接关闭页面退出到公众号

 

1、微信jssdk(closeWindow)

let sign_url = window.location.href.split('#')[0];
sign(sign_url).then((res)=>{
    let configData = {
        debug: false,
        appId: res.data.appId,
        timestamp: res.data.timestamp,
        nonceStr: res.data.nonceStr,
        signature: res.data.signature,
        jsApiList: ['closeWindow']
    }


    console.log(configData)
    wx.config(configData)
}).catch((err)=>{
})

2、通过监听popstate事件,来判断是否点击返回按钮,调用wx.closeWindow方法

window.addEventListener("popstate", (e) => {
    wx.closeWindow();
}, false);
 

场景图:

 
### 如何在 UniApp 中使用微信 JSSDK 的 `wx.chooseImage` 方法选择图片 为了成功调用微信JSSDK中的`chooseImage`方法,在UniApp环境中需确保几个前提条件得到满足。首先,服务器端应正确实现签名算法并返回有效的config配置给前端[^1]。 对于iOS设备上遇到的`chooseImage`接口不生效的情况,除了确认不是由于请求参数中`count`超过9张照片引起的之外,还需重点排查获取config签名路由配置环节是否存在错误。另外,针对不同操作系统(Android或iOS),可以编写逻辑来区分处理方式,尽管这通常不会影响到`chooseImage`的具体行为。 下面是一个简单的代码片段展示如何初始化微信JS-SDK以及调用`chooseImage`: ```javascript // 假设已经通过服务端得到了合法的signature, timestamp, nonceStr等必要参数 import { config } from 'weixin-js-sdk'; // 导入必要的库 export default { mounted() { const that = this; wx.config({ debug: false, appId: 'your_app_id', timestamp: your_timestamp, nonceStr: 'your_nonce_str', signature: 'your_signature', jsApiList: ['chooseImage'] }); wx.ready(function(){ // 成功验证后可安全调用API document.getElementById('selectPhoto').onclick = function () { wx.chooseImage({ count: 9, // 默认最多可以选择的照片数量 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success(res) { console.log(res); // 处理选中后的图片数据... } }); }; }); wx.error(function(res){ alert(JSON.stringify(res)); }); } } ``` 需要注意的是,当在H5页面中集成微信JS-SDK时可能会碰到诸如`wx.agentConfig is not a function` 或者 `wx.config is not a function`这样的报错信息,这类问题往往是因为引入了不适合环境版本的SDK文件所造成的[^2]。因此建议开发者仔细阅读官方文档,并按照指引加载最新版且适用于目标平台的JavaScript SDK资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值