本篇文章给你们带来的内容是关于移动端H5开发遇到的问题及解决方法,有必定的参考价值,有须要的朋友能够参考一下,但愿对你有所帮助。php
微信分享签名错误invalid signaturecss
vue单页应用history模式下微信分享一直提示签名错误invalid signature前端
按照微信官网文档,已经引入jssdk,正确的配置js安全域名,后台开发人员生成的签名也经过微信签名工具验证,可是前端的自定义分享一直报签名错误,没有办法自定义分享,若是确保了哪些基本配置没有问题,而且签名也经过了微信签名工具验证,那么可能就是前端访问的url和后台生成签名的url不一致致使的签名错误vue
前端若是是经过ajax将url传到后端获取签名,那么咱们须要将当前页面除去'#'hash部分的连接,而且须要encodeURIComponentios
1ajax 2后端 |
|
正常来讲这样就能够实现微信自定义分享了,可是单页应用路由切换了以后IOS端仍是提示签名错误,安卓端没有问题安全
这是由于history模式下视图是经过pushState来切换的,可是IOS微信客户端(安卓客户端已经修复了)不支持pushState的H5新特性,因此路由变化了可是微信浏览器获取到的url没有变化,右上角复制连接发现,微信记录的url仍是第一次进入时的url,除非你手动刷新,或者使用window.location等页面跳转方法刷新,才能获取到最新的url
解决的办法是页面进入的时候记录url,若是是iOS设备那么使用这个url获取微信签名
1 2 3 4 5 6 7 |
|
这个时候拿这个url去获取微信签名就是正确的了,该方法只适合IOS设备,只要获取签名的url和微信记录的url一致签名就是正确的
点击浏览器的前进和回退,有时候不会自动执行js,特别是在safari中,这与往返缓存(bfcache)有关系。
解决方法 :window.onunload = function(){};
若是是Vue单页应用,而且使用了keep-alive的话,页面也不会刷新,这时候一些接口请求等能够放在beforeRouteEnter方法中
这种写法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")这种形式
1 2 |
|
一个页面可能有多个二维码,可是长按识别二维码只能识别最后一个二维码,这个时候咱们须要控制页面可视区域内只能出现一个二维码
span,p 等默认没法点击的标签, IOS中监听click事件点击无效
解决办法,添加 cursor: pointer;
audio.play() 方法在安卓设备能够正常播放,可是在IOS客户端不能播放,在设置了audio的src以后,咱们须要加上这一行代码
audio.load() 去加载音频
能够经过监听loadeddata方法看音频是否能够开始播放了,安卓设置在音频加载好了以后就开始播放,可是iOS端可能稍微有延迟,这个时候咱们能够经过audio.currentTime获取到音频是否开始播放,这个值大于0就说明已经开始播放了
在ios8如下系统,当小键盘激活时,都会出现位置浮动问题,解决方法:只须要在中间部分外层p添加css样式position:fixed;top:50px; bottom:50px;overflow:scroll;