微信分享署名毛病invalid signature
vue单页运用history情势下微信分享一向提醒署名毛病invalid signature
根据微信官网文档,已引入jssdk,准确的设置js平安域名,背景开发人员天生的署名也经由过程微信署名东西考证,然则前端的自定义分享一向报署名毛病,没有方法自定义分享,假如确保了哪些基础设置没有题目,而且署名也经由过程了微信署名东西考证,那末能够就是前端接见的url和背景天生署名的url不一致致使的署名毛病
前端假如是经由过程ajax将url传到后端猎取署名,那末我们须要将当前页面撤除’#’hash部份的链接,而且须要encodeURIComponent
let url = location.href.split('#')[0]
encodeURIComponent(url)
一般来讲如许就能够完成微信自定义分享了,然则单页运用路由切换了以后IOS端照样提醒署名毛病,安卓端没有题目
这是由于history情势下视图是经由过程pushState来切换的,然则IOS微信客户端(安卓客户端已修复了)不支撑pushState的H5新特征,所以路由变化了然则微信浏览器猎取到的url没有变化,右上角复制链接发明,微信纪录的url照样第一次进入时的url,除非你手动革新,或许运用window.location等页面跳转要领革新,才猎取到最新的url
处理的方法是页面进入的时刻纪录url,假如是iOS装备那末运用这个url猎取微信署名
router.afterEach(to => {
sessionStorage.setItem('currentUrl',window.location.href)
})
let url = encodeURIComponent(location.href.split('#')[0])
if(system == "iOS" && sessionStorage.getItem('currentUrl')) {
url = encodeURIComponent(sessionStorage.getItem('currentUrl').split('#')[0])
}
这个时刻拿这个url去猎取微信署名就是准确的了,该要领只合适IOS装备,只需猎取署名的url和微信纪录的url一致署名就是准确的
往复缓存题目
点击浏览器的行进和回退,有时刻不会自动实行js,特别是在safari中,这与往复缓存(bfcache)有关联。
处理要领 :window.onunload = function(){};
假如是Vue单页运用,而且运用了keep-alive的话,页面也不会革新,这时刻一些接口要求等能够放在beforeRouteEnter要领中
IOS端不支撑new Date(“2019-01-01 00:00:00”) 这类花样
这类写法new Date(“2019-01-01 00:00:00”)在安卓端是支撑的,然则在IOS端不支撑,会报NAN毛病,所以须要把new Date(“2019-01-01 00:00:00”)改成new Date(“2019/01/01 00:00:00”)这类情势
let date = '2019-01-01 00:00:00'
date.replace(/\-/g, '/')
微信二维码
一个页面能够有多个二维码,然则长按辨认二维码只能辨认末了一个二维码,这个时刻我们须要掌握页面可视区域内只能涌现一个二维码
IOS中没法点击
span,div 等默许没法点击的标签, IOS中监听click事宜点击无效
处理方法,增加 cursor: pointer
;
audio音频没法播放
audio.play() 要领在安卓装备能够一般播放,然则在IOS客户端不能播放,在设置了audio的src以后,我们须要加上这一行代码audio.load()
去加载音频
能够经由过程监听loadeddata要领看音频是不是能够最先播放了,安卓设置在音频加载好了以后就最先播放,然则iOS端能够轻微有耽误,这个时刻我们能够经由过程audio.currentTime
猎取到音频是不是最先播放,这个值大于0就申明已最先播放了
IOS挪动端click事宜300ms的耽误相应
fixed题目
在ios8以下体系,当小键盘激活时,都邑涌现位置浮动题目,处理要领:只须要在中心部份外层div增加css款式position:fixed;top:50px; bottom:50px;overflow:scroll;