关于ios系统上微信浏览器jssdk偶尔失效的问题

新手上路,请多包涵

最近小弟在开发微信浏览器上的网页时发现了一个问题,就是在ios上微信的sdk调用会出现问题:
我的网页使用了如下接口:
'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareQZone', 'hideMenuItems', 'showAllNonBaseMenuItem',
基本是一些关于分享的api。
遇到的问题如下:
1、首次进入该网页,运行正常。
2、短时间内再次进入此网页(貌似此时偶尔情况下微信对于网页仍有缓存,代码不会再次运行,因为我尝试alert此时也不会运行),以上api均会失效。
3、短时间内再次进入此网页,并刷新,运行正常,api调用正常(代码重新运行了一遍)。
4、安卓上不存在此问题

我用的是vue写的spa,用到了vue-router,但用的是hash模式,没有用history模式。

请问有没有前辈大神们知道这个是什么问题?

阅读 5k
1 个回答
新手上路,请多包涵

从微信对话窗口的链接或者朋友圈点击第一次进入的页面我们称之为 landingPage。
此时通过sessionStorage记录该url,在通过点击进入的内部页面调用jssdk的时候,若判断浏览器为iOS版微信浏览器,则调用jssdk的url的参数使用landingPage,否则使用location.href。

参考代码:

//从其他页面进入列表页
router.afterEach((to, from, next) => {
  //判断是否为着陆页
  if ( navigator.userAgent.toLowerCase().indexOf('iphone') !== -1  && !sessionStorage.getItem('landingUrl')){
      sessionStorage.setItem('landingUrl', location.href);
  }
  
}

//然后在需要调用jssdk初始化的位置对url赋值
let url = location.href;
if (navigator.userAgent.toLowerCase().indexOf('iphone') !== -1){
  url = sessionStorage.landingUrl;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题