经过以上分析判断,给出的解决方案就是,如果使用了缓存,自动重载页面。以下是JS代码解决方案:
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
}
或者下方代码:
var isPageHide = false
window.addEventListener('pageshow', function () {
if (isPageHide) {
window.location.reload()
}
})
window.addEventListener('pagehide', function () {
isPageHide = true
})
html头部处理缓存信息:
扩展说明:
pageshow:
当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发)
toast("微信扫一扫 Tanghui") //本脚本在魅蓝 6上实测有效 //正常运行。根据机型不同,代码 //也需要做出适当调整 //并且打包成APP安装后使用最好了 //虽然有提示什么32位的闪退什么的 //实际情况就是能正常使用,没什么问题 //第一步打开数据连接 app.startActivity({ action: "android.settings.DATA_ROAMING_SETTINGS" }) sleep(2000) if(desc("关闭").exists()){ click(383,742) }launchApp("微信") sleep(1500) //以下三种情况都是为了返回微信首 //页,便于运行 //如果在上次求助窗口内则返回 if(text("我的收藏").exists()){ back() sleep(1500)} //1.根据左下角文字语音切换图标控件id判断 //如果打开了某人的对话页面则返回首页 if(id("com.tencent.mm:id/b7l"). exists()){ back() //等待1秒钟,等页面加载完成(下同) sleep(1500) } //2.根据左上角放大镜图标控件id判断如果 //在搜索页面则返回首页 if(id("com.tencent.mm:id/j64"). exists()){ back() sleep(1500) } //3.判断如果处于“通讯录"、"发现"、"我”页 //面时返回首页 //if(!id("com.tencent.mm:id/fd"). exists()){ if(text("服务").exists()){ //o=text("微信").findOne(0).bounds() //click(o.centerX(),o.centerY()) click(120,1220) } if(text("朋友圈").exists()){ //o=text("微信").findOne(0).bounds() //click(o.centerX(),o.centerY()) click(120,1220) }if(text("新的朋友").exists()){ //o=text("微信").findOne(0).bounds() //click(o.centerX(),o.centerY()) click(120,1220) } //点击微信右上角加号 id("com.tencent.mm:id/grz").findOne().click() sleep(1500) //再点击扫一扫打开它 s=text("扫一扫").findOne().bounds() click(s.centerX(),s.centerY())本篇为 JS交互微信系列篇 的第四篇 微信JSAPI支付 ,记录在微信内置浏览器内用调用微信支付过程。
JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。
要拥有两个账号:
要开通产品中心的JSAPI支付。然后 产品中心=>开发配置=>支付配置=>公众号支付配置 绑定支付授权目录,写已通过ICP备案的域名。
另外,要在ip白名单中,配置测试地址ip和线上生产地址ip,不然各种回调都会失败!
由于在微信内支付需要获取用户的 openid ,要获取它则必须通过网页授权配置。在公微信公众平台中, 公众号设置=>功能设置=>网页授权域名 中按要求填写。
在支付流程方面,重点依然都在后端处理,前端方面步骤比较简单。本文只叙述前端内容。
在将要进入支付的前一页面,直接接入微信授权,然后跳转进要支付的那个页面。举个例子:有a、b两个页面,在b页面用到支付,b页面由a页面跳转而来。那么在a页面跳b页面的时候,别直接跳转b的url,而是跳转到:
https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&redirect_uri={b.html}&response_type=code&scope=snsapi_base#wechat_redirect
我们注意到,这里有这两个需要自己写的参数: appid 和 redirect_uri ,意义是:
另外,还有一个注意的点是, b.html这个url我们要进行encode转码,不然地址解析可能会出现问题!
上一步执行完后,在微信浏览器中,我们会得到一个链接,类似:
b.html?&code={code}&state=#/
在此处,我们得到了一个code值,这就是我们获取 openid 的凭证了。
获取方法当然是把值传给后台,后台去处理啦~
在上一步中,我们拿到code值后,就可以提交一些信息给后端了,比如商品相关属性、总价等,另外加上code值,传给后端。后端一顿操作后,返回给前端。我们需要的参数如下(后端返回下面这些参数):
上个步骤拿到需要交互微信的参数后,就开始调用微信的支付接口了,如下:
至此,调用微信JSAPI来完成在微信内的支付就完成了。