当前位置:   article > 正文

uniapp的App端内嵌uniapp的H5端并实现通讯传参_uniapp和h5传值

uniapp和h5传值

实现方式:通过uniapp内置组件web-view实现App内嵌H5页面

  1. /***
  2. url: 网页的链接
  3. message:网页向应用 postMessage 时,会在特定时机触发并收到消息方法
  4. ***/
  5. <web-view :src="url" @message="message" ref="webview"></web-view>

App端向H5端传参(相对比较简单):

1、路径传参:直接在url地址栏拼接参数

  1. onLoad() {
  2. this.url = `http://192.168.15.108:7080/#/?TradeCode=${this.TradeCode}&openID=${this.openID}`
  3. },

在H5端页面的onLoad生命周期拿到参数:

  1. onLoad(e) {
  2. if (!e || !e.TradeCode || !e.openID) {
  3. this.$toast('参数解析有误!')
  4. setTimeout(() => {
  5. // uni.reLaunch({
  6. // url: '/pages/index/index'
  7. // })
  8. }, 800)
  9. return
  10. }
  11. this.query = e
  12. console.log('传参', this.query);
  13. },

2. 通过postMessage方法向h5页面传参:

  1. this.$refs.webview.postMessage({
  2. data: {
  3. TradeCode: this.TradeCode,
  4. openID: this.openID
  5. }
  6. });

在H5端,通过监听window的message事件获取传递的参数:

  1. window.addEventListener('message', function(e) {
  2. if (!e.data || !e.data.TradeCode || !e.data.openID) {
  3. this.$toast('参数解析有误!')
  4. setTimeout(() => {
  5. // uni.reLaunch({
  6. // url: '/pages/index/index'
  7. // })
  8. }, 800)
  9. return
  10. }
  11. this.query = e.data
  12. console.log('传参', this.query);
  13. });

H5端向App端传参(相对比较复杂):

第一步:通过uniapp官网提供的网址下载uni.web-view.js 

 本案例将保存的js文件路径:/common/dist_uni.webview.1.5.4.js

 第二步:配置main.js文件:(全局挂载)

  1. import '@/common/dist_uni.webview.1.5.4.js'
  2. document.addEventListener("UniAppJSBridgeReady", function() {
  3. Vue.prototype.$myUni = uni
  4. });

第三步:H5页面操作完之后要传参给App端:

  1. console.log('1111111--------->', this.$myUni.webView);
  2. this.$myUni.webView.postMessage({
  3. data: {//data值任意写
  4. action: 'H5返回App',
  5. number: '123456'
  6. },
  7. })

扩展:App端代码

  1. <template>
  2. <view>
  3. <web-view :src="url" @message="message" ref="webview"></web-view>
  4. </view>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. url: '',
  11. TradeCode:'PreReg',
  12. openID:9976
  13. };
  14. },
  15. onLoad() {
  16. //this.$refs.webview.postMessage({
  17. // data: {
  18. // TradeCode: this.TradeCode,
  19. // openID: this.openID
  20. // }
  21. //});
  22. this.url = `http://192.168.15.108:7080/#/?TradeCode=${this.TradeCode}&openID=${this.openID}`
  23. },
  24. methods:{
  25. message(e){
  26. console.log('H5传参',e);
  27. }
  28. }
  29. };
  30. </script>
  31. <style>
  32. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/636939
推荐阅读