table组件自定义标题头,使用具名插槽 slot=”header” ,需要有slot="header" slot-scope="scope"
, 不加slot-scope=”scope”无法实现el-select数据绑定
微信浏览器 video 层级最高,遮挡dialog
<video
id="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.config
wx.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('微信小程序支付调用失败')
}
},
})
// getBrandWCPayRequest
function 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由父组件传到子组件,不能用对象形式,用字符串