table组件自定义标题头,使用具名插槽 slot=”header” ,需要有slot="header" slot-scope="scope", 不加slot-scope=”scope”无法实现el-select数据绑定
微信浏览器 video 层级最高,遮挡dialog
<videoid="video"src="src"preload="auto"x5-video-player-type="h5-page"x5-playsinline="true"playsinline="true"webkit-playsinline="true"height="150"width="300"></video>x5-video-player-type="h5-page" 启用H5同层播放器,但是在点击播放后层级还是最高x5-playsinline="true"playsinline="true"webkit-playsinline="true" 启用内联播放,不自动全屏播放
uni h5 自定义打包文件生成路径 (目前无解)。用vue.config.js添加自定义模版变量(无解,args[0] 为undefined)
配置host文件后vue项目页面出现这个Invalid Host header错误,添加
devServer: {disableHostCheck: true}
h5微信(公众号)坑
权限问题:
- 申请公众号, 开通各种需要的权限
- 设置页面授权域名
- JS接口安全域名配置
- 支付安全目录(支付授权域名配置要登录商户平台),注意:(微信的支付授权目录要精确到子目录级别,而 spa hash模式 的 url的形式大概为 /wechat/#/show/1、/wechat/#/list/type 这样,就会产生发生支付的页面报支付目录未定义的问题。针对这个问题可以在根目录后加加上 ? 符号链接,后面的地址就会被当成参数解析,而不会当成目录。/wechat/?#/show/1、/wechat?#/list/type,这样解析出来的目录都是在 /wechat/ 根目录下面)
- 每个调用wxsdk方法的页面,需要提前在页面加载时调用
wx.config
- 分享链接域名或路径必须与当前页面对应的公众号JS安全域名一致
- 调用
wx.config方法报错:(是否成功绑定了域名(域名校验文件要能被访问到),需要使用的方法是否写在了jsApiList中,获取签名的url需要decodeURIComponent) - 接口调用需要放在
wx.ready方法中 - 在页面url变化的时候重新调用
wx.config方法,android获取签名的url就传window.location.href spa项目中(hash,history都是一样),IOS中浏览器的url并不会改变,依旧是第一次进入页面的地址,所以IOS获取签名的url需要传第一次进入的页面url(可以在首次进入里把
location.href存下来)。IOS 注册了一次分享,页面跳转url不变,故分享的内容还在,只能再注册了一次分享来覆盖,android页面跳转后则需要再 注册分享差异:
getBrandWCPayRequest是旧的,不需要wx.config配置, 参数需要注意大小写(微信接口不规范,timestamp字段),chooseWXPay是新的,调用前需要wx.config配置,注册api接口名。参数需要注意大小写(微信接口不规范)getBrandWCPayRequest错误返回比较详细
建议: 优先使用新的chooseWXPay接口,失败时再用getBrandWCPayRequest获取详细信息
// chooseWXPay 需要先调用wx.configwx.chooseWXPay({timestamp: timeStamp,nonceStr,package: pkg,signType,paySign,success(res) {console.log('================')console.log('微信小程序支付调用成功 >>>>>>', res)console.log('================')},fail(res) {console.log('================')console.log('微信小程序支付调用失败 >>>>>>', res)console.log('================')// 过滤手动关闭if (res.errMsg && res.errMsg !== 'requestPayment:fail cancel') {that.$api.msg('微信小程序支付调用失败')}},})// getBrandWCPayRequestfunction onBridgeReady(){WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId":"wx2421b1c4370ec43b", //公众号名称,由商户传入"timeStamp":"1395712654", //时间戳,自1970年以来的秒数"nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串"package":"prepay_id=u802345jgfjsdfgsdg888","signType":"MD5", //微信签名方式:"paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名},function(res){if(res.err_msg == "get_brand_wcpay_request:ok" ){// 使用以上方式判断前端返回,微信团队郑重提示://res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。}});}if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', onBridgeReady);document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}}else{onBridgeReady();}
其他:
- UnionID需要关注公众号(h5和小程序)才能获取 文档
- 安卓下无法使用 html5 input 无法唤起摄像头
<input id="uploaderInput" @change="change" class="weui-uploader__input" type="file" accept="image/*" multiple />加上 capture=camera” 可以直接使用拍照,但是选择图库又没了 。解决方案: 1. 微信的 jssdk 来选择图片 2. 使用两个input,分别是选择图库、直接打开拍照 - 自定义分享成功后的页面url会带有微信返回的参数 ``` 对于IOS系统会自动增加如下参数:
朋友圈 from=timeline&isappinstalled=0 微信群 from=groupmessage&isappinstalled=0 好友分享 from=singlemessage&isappinstalled=0
对于安卓系统会自动添加如下参数:
朋友圈 from=timeline 微信群 from=groupmessage 好友分享 from=singlemessage
安卓手机下自定义分享后会截掉你#之后的所有内容. 如果我们使用的是hash模式, 就会有bug ```
uni 坑
- App.vue的onLaunch中做跳转, 页面onload获取不到options参数,需要用setTimeout 或 uni-simple-router
- App.vue的onLaunch中不能阻塞第一个页面的加载
- slot 传参, slot调方法会报错, 只能简单访问
- style由父组件传到子组件,不能用对象形式,用字符串
