微信开发遇到的问题及解决
情景1
我在做项目时,有一个页面(A页面)是选择数据项,这时跳了一个页面,到一个新的页面(B页面)选择数据,在这个新的页面(B页面)点击确定后,我把选择的数据存入window.sessionStorage中,然后返回上个页面(A页面)并将其刷新[window.history.go(-1);],而我在A页面读取缓存填写数据;
出现问题:ios中的微信不支持返回上一个页面并刷新[window.history.go(-1);],它仅仅只返回了上一个页面,不执行刷新操作;
解决:
在A页面添加
$(function () {
var isPageHide = false;
window.addEventListener('pageshow', function () {
if (isPageHide) {
window.location.reload();
}
});
window.addEventListener('pagehide', function () {
isPageHide = true;
});
})
B页面返回上一页的方法改为:
window.history.back(-1);
情景2
我在开发微信公众号时,由于该项目没有明确的登录的页面来起清空用户信息(重新加载用户信息)的作用,一旦用户的角色发生了变化,那么一些功能页面(在这个页面不同的角色看到的信息或可以做的事情不同)就会发生一些尴尬的情况,所以我做了一个功能菜单专门用来清空用户信息,其就是一个按钮,点击后用户的session就会被清空,然后重新登录,在页面上返回首页(也就上一页)[window.history.go(-1);]
出现问题:
微信公众号的首页(就那个聊天框),似乎不被视为页面,然后就很尴尬了,我那个页面的定时提示几秒跳…..时间到了没反应…
解决:
直接使用微信的api:WeixinJSBridge.invoke(‘closeWindow’);关闭当前窗口
$(function() {
//3秒后关闭窗口[这里一旦关闭了窗口就是返回了首页]
window.setTimeout("back()",3000);
//每隔1秒刷新提示(还有几秒跳)
window.setInterval("resetNum()",1000);
})
function back(){
WeixinJSBridge.invoke('closeWindow');
}
function resetNum(){
var numStr=$("#num").html();
var num=parseInt(numStr);
num=num-1;
if(0==num){
return;
}
$("#num").html(num);
}