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

发布于 2022-09-05 20:02:18 字数 475 浏览 18 评论 0

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稚气少女 2022-09-12 20:02:18

从微信对话窗口的链接或者朋友圈点击第一次进入的页面我们称之为 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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文