table组件自定义标题头,使用具名插槽 slot=”header” ,需要有slot="header" slot-scope="scope", 不加slot-scope=”scope”无法实现el-select数据绑定

微信浏览器 video 层级最高,遮挡dialog

  1. <video
  2. id="video"
  3. src="src"
  4. preload="auto"
  5. x5-video-player-type="h5-page"
  6. x5-playsinline="true"
  7. playsinline="true"
  8. webkit-playsinline="true"
  9. height="150"
  10. width="300"
  11. ></video>
  12. x5-video-player-type="h5-page" 启用H5同层播放器,但是在点击播放后层级还是最高
  13. x5-playsinline="true"
  14. playsinline="true"
  15. webkit-playsinline="true" 启用内联播放,不自动全屏播放

uni h5 自定义打包文件生成路径 (目前无解)。用vue.config.js添加自定义模版变量(无解,args[0] 为undefined)

配置host文件后vue项目页面出现这个Invalid Host header错误,添加

  1. devServer: {
  2. disableHostCheck: true
  3. }

h5微信(公众号)坑

权限问题:

  1. 申请公众号, 开通各种需要的权限
  2. 设置页面授权域名
  3. JS接口安全域名配置
  4. 支付安全目录(支付授权域名配置要登录商户平台),注意:(微信的支付授权目录要精确到子目录级别,而 spa hash模式 的 url的形式大概为 /wechat/#/show/1、/wechat/#/list/type 这样,就会产生发生支付的页面报支付目录未定义的问题。针对这个问题可以在根目录后加加上 ? 符号链接,后面的地址就会被当成参数解析,而不会当成目录。/wechat/?#/show/1、/wechat?#/list/type,这样解析出来的目录都是在 /wechat/ 根目录下面)
  5. 每个调用wxsdk方法的页面,需要提前在页面加载时调用wx.config

文档1 文档2
分享问题:

  1. 分享链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  2. 调用wx.config方法报错:(是否成功绑定了域名(域名校验文件要能被访问到),需要使用的方法是否写在了jsApiList中,获取签名的url需要decodeURIComponent
  3. 接口调用需要放在wx.ready方法中
  4. 在页面url变化的时候重新调用wx.config方法,android获取签名的url就传window.location.href
  5. spa项目中(hash,history都是一样),IOS中浏览器的url并不会改变,依旧是第一次进入页面的地址,所以IOS获取签名的url需要传第一次进入的页面url(可以在首次进入里把location.href存下来)。IOS 注册了一次分享,页面跳转url不变,故分享的内容还在,只能再注册了一次分享来覆盖,android页面跳转后则需要再 注册分享

    差异:

  6. getBrandWCPayRequest是旧的,不需要 wx.config配置, 参数需要注意大小写(微信接口不规范,timestamp字段), chooseWXPay是新的,调用前需要wx.config配置,注册api接口名。参数需要注意大小写(微信接口不规范)

  7. getBrandWCPayRequest错误返回比较详细

建议: 优先使用新的chooseWXPay接口,失败时再用getBrandWCPayRequest获取详细信息

  1. // chooseWXPay 需要先调用wx.config
  2. wx.chooseWXPay({
  3. timestamp: timeStamp,
  4. nonceStr,
  5. package: pkg,
  6. signType,
  7. paySign,
  8. success(res) {
  9. console.log('================')
  10. console.log('微信小程序支付调用成功 >>>>>>', res)
  11. console.log('================')
  12. },
  13. fail(res) {
  14. console.log('================')
  15. console.log('微信小程序支付调用失败 >>>>>>', res)
  16. console.log('================')
  17. // 过滤手动关闭
  18. if (res.errMsg && res.errMsg !== 'requestPayment:fail cancel') {
  19. that.$api.msg('微信小程序支付调用失败')
  20. }
  21. },
  22. })
  23. // getBrandWCPayRequest
  24. function onBridgeReady(){
  25. WeixinJSBridge.invoke(
  26. 'getBrandWCPayRequest', {
  27. "appId":"wx2421b1c4370ec43b", //公众号名称,由商户传入
  28. "timeStamp":"1395712654", //时间戳,自1970年以来的秒数
  29. "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串
  30. "package":"prepay_id=u802345jgfjsdfgsdg888",
  31. "signType":"MD5", //微信签名方式:
  32. "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名
  33. },
  34. function(res){
  35. if(res.err_msg == "get_brand_wcpay_request:ok" ){
  36. // 使用以上方式判断前端返回,微信团队郑重提示:
  37. //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  38. }
  39. });
  40. }
  41. if (typeof WeixinJSBridge == "undefined"){
  42. if( document.addEventListener ){
  43. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  44. }else if (document.attachEvent){
  45. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  46. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  47. }
  48. }else{
  49. onBridgeReady();
  50. }

其他:

  1. UnionID需要关注公众号(h5和小程序)才能获取 文档
  2. 安卓下无法使用 html5 input 无法唤起摄像头 <input id="uploaderInput" @change="change" class="weui-uploader__input" type="file" accept="image/*" multiple /> 加上 capture=camera” 可以直接使用拍照,但是选择图库又没了 。解决方案: 1. 微信的 jssdk 来选择图片 2. 使用两个input,分别是选择图库直接打开拍照
  3. 自定义分享成功后的页面url会带有微信返回的参数 ``` 对于IOS系统会自动增加如下参数:

朋友圈 from=timeline&isappinstalled=0 微信群 from=groupmessage&isappinstalled=0 好友分享 from=singlemessage&isappinstalled=0

对于安卓系统会自动添加如下参数:

朋友圈 from=timeline 微信群 from=groupmessage 好友分享 from=singlemessage

安卓手机下自定义分享后会截掉你#之后的所有内容. 如果我们使用的是hash模式, 就会有bug ```

uni 坑

  1. App.vue的onLaunch中做跳转, 页面onload获取不到options参数,需要用setTimeout 或 uni-simple-router
  2. App.vue的onLaunch中不能阻塞第一个页面的加载
  3. slot 传参, slot调方法会报错, 只能简单访问
  4. style由父组件传到子组件,不能用对象形式,用字符串