当前位置:   article > 正文

uniapp兼容微信小程序和支付宝小程序遇到的坑_uniapp打开支付宝小程序

uniapp打开支付宝小程序

1、支付宝不支持v-show

改为v-if

2、v-html

App端和H5端支持 v-html ,微信小程序会被转为 rich-text,其他端不支持 v-html。

解决方法:去插件市场找一个支持跨端的富文本组件。

3、导航栏处有背景色延伸至导航栏外

兼容微信小程序和支付宝小程序 

pages.json:给支付宝的导航栏设置透明

  1. {
  2. "path": "pages/agent/agent",
  3. "style": {
  4. "navigationStyle": "custom",
  5. "enablePullDownRefresh": false,
  6. "mp-alipay": {
  7. "transparentTitle": "always",
  8. "titlePenetrate": "YES"
  9. }
  10. }
  11. }

agent页面:

支付宝加上my.setNavigationBar设置标题文字即可,微信需要自定义导航栏

html: 

  1. <template>
  2. <view style="height: 100vh;position: relative;">
  3. <view class="bj"></view>
  4. <view class="status_bar"></view>
  5. <!-- #ifndef MP-ALIPAY -->
  6. <view class="back" @click="back" :style="{ top: menuButton.top + 'px', height: menuButton.height + 'px' }">
  7. <view class="text1"></view>
  8. 代理中心
  9. </view>
  10. <!-- #endif -->
  11. </template>

js:

  1. <script>
  2. export default {
  3. data() {
  4. return {
  5. menuButton: {}
  6. }
  7. },
  8. onLoad() {
  9. // #ifdef MP-WEIXIN
  10. this.menuButton = uni.getMenuButtonBoundingClientRect()
  11. // #endif
  12. // #ifdef MP-ALIPAY
  13. my.setNavigationBar({
  14. title: '代理中心'
  15. })
  16. // #endif
  17. },
  18. methods: {
  19. back() {
  20. uni.navigateBack({
  21. delta: 1,
  22. })
  23. },
  24. }
  25. }
  26. </script>

 css:

  1. .bj {
  2. background: linear-gradient(180deg, #ffbdbd#ff8f8f);
  3. height: 460rpx;
  4. width: 100%;
  5. position: absolute;
  6. }
  7. .status_bar {
  8. height: var(--status-bar-height);
  9. width: 100%;
  10. }
  11. .back {
  12. position: fixed;
  13. z-index: 99;
  14. display: flex;
  15. align-items: center;
  16. color: #292929;
  17. }
  18. .text1 {
  19. margin-right: 14rpx;
  20. margin-left: 32rpx;
  21. width: 16rpx;
  22. height: 16rpx;
  23. border-left: 2px solid #292929;
  24. border-top: 2px solid #292929;
  25. transform: rotate(-45deg);
  26. }

参考:小程序文档 - 支付宝文档中心

4、获取节点信息,支付宝不兼容uni.createSelectorQuery().in中的in

  1. //#ifdef MP-WEIXIN
  2. uni.createSelectorQuery().in(this).selectAll('.content_box').boundingClientRect(res => {
  3. this.nodeData = res
  4. }).exec();
  5. //#endif
  6. //#ifdef MP-ALIPAY
  7. my.createSelectorQuery().selectAll('.content_box').boundingClientRect().exec(res => {
  8. this.nodeData = res[0]
  9. })
  10. //#endif

5、客服

open-type="contact" 仅支持:微信小程序、百度小程序、快手小程序、抖音小程序

  1. <!-- #ifdef MP-WEIXIN -->
  2. <button open-type="contact"></button>
  3. <!-- #endif -->

支付宝接入客服:

首先在支付宝开放平台开通蚂蚁智能客服:支付宝开放平台-->控制台-->小程序信息-->在线客服

开通后点击小程序的右上角三个点就有客服功能了

如果想点击某个按钮时进入客服页面:

  1. <contact-button
  2. tnt-inst-id="企业编码"
  3. scene="聊天窗编码"
  4. size="咨询按钮大小"
  5. color="咨询按钮颜色"
  6. icon="咨询按钮图片url,例如:https://xxx/service.png"
  7. />

 tips: 企业编码、聊天窗编码在:

 

tips: contact-button本身无法修改样式,若想达到自己想要的效果如:

 方法:父元素设置相对定位 + overflow: hidden超出隐藏,子元素里循环很多个contact-button出来,绝对定位,并使用opacity:0隐藏,代码:

  1. <view style="position: relative;width: 100%;overflow: hidden;display: flex;">
  2. <view>官方客服</view>
  3. <view class="iconfont iconfanhui1"></view>
  4. <view class="alipyContact" style="opacity:0; position: absolute;">
  5. <contact-button size="40rpx" v-for="(item,index) in 15" :key="index" />
  6. </view>
  7. </view>

 参考:小程序文档 - 支付宝文档中心

6、position: fixed在支付宝小程序会被弹出的键盘顶上去

 如下图: “同意《服务和隐私协议》”被弹起的键盘带上来了

 

7、uniapp小程序超出限制:Error: 分包大小超过限制,main package source size 4199KB exceed max limit 2MB

改了几行代码上传时发现超过限制,解决方法: 

参考: 

https://www.cnblogs.com/Denny_Yang/p/16769455.html

 8、uniapp 使用 require 绝对路径引入文件时,报错“文件查找失败”

 我在 main.js 中使用绝对路径引入:

  1. // 引入请求封装,将app参数传递到配置中
  2. require('/config/request.js')(app)

 出现:

原因:

参考:js 文件引入 | uni-app官网

解决方案:使用相对路径即可

  1. // 以下两种方式都可以
  2. require('config/request.js')(app)
  3. require('./config/request.js')(app)

9、页面跳转时,绝对路径和相对路径的区别

以`uni.navigateTo`举例:

  1. uni.navigateTo({
  2. url: 'pagesB/pages/publishQues'
  3. })
  4. uni.navigateTo({
  5. url: '/pagesB/pages/publishQues'
  6. })
  1. `uni.navigateTo``url` 参数支持相对路径和绝对路径两种方式。
  2. 相对路径是相对于当前页面的位置进行计算,而绝对路径是从根目录开始计算
  3. - `uni.navigateTo({ url: 'pagesB/pages/publishQues' })` 使用的是相对路径。
  4. 如果当前页面路径是 `pagesB/pages/index`,那么相对路径 `pagesB/pages/publishQues`
  5. 会拼接在当前页面路径的基础上,
  6. 得到最终跳转路径为 `pagesB/pages/pagesB/pages/publishQues`
  7. - `uni.navigateTo({ url: '/pagesB/pages/publishQues' })` 使用的是绝对路径。
  8. 无论当前页面路径是什么,绝对路径 `/pagesB/pages/publishQues` 都是从根目录开始计算,
  9. 因此最终的跳转路径是 `pagesB/pages/publishQues`

10、报错SyntaxError: Unexpected token } in JSON at position 264

报错:

Module build failed (from ./node_modules/@dcloudio/webpack-uni-pages-loader/lib/index.js):
08:58:30.510 SyntaxError: Unexpected token } in JSON at position 264
08:58:30.513     at JSON.parse (<anonymous>)

在小程序编译时,有些会报上述错误,有些不会,很难察觉这个错误,错误代码示例: 

  1. {
  2. "path": "pages/index/index",
  3. "style": {
  4. "navigationBarTitleText": "标题",
  5. "enablePullDownRefresh": false,
  6. "navigationStyle": "custom",
  7. // #ifdef MP-TOUTIAO
  8. "navigationStyle": "default"
  9. // #endif
  10. }
  11. },

原因:在JSON中,对象的最后一个元素后面不应该有逗号。

例如,{"key1": "value1", "key2": "value2",} 这样的写法是错误的。 假设在微信小程序中运行上述代码,就是多了一个逗号

改正:

  1. {
  2. "path": "pages/index/index",
  3. "style": {
  4. "navigationBarTitleText": "标题",
  5. "navigationStyle": "custom",
  6. // #ifdef MP-TOUTIAO
  7. "navigationStyle": "default",
  8. // #endif
  9. "enablePullDownRefresh": false
  10. }
  11. },
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/231989
推荐阅读
相关标签
  

闽ICP备14008679号