然后再引入uniapp 的JS
当前位置:   article > 正文

关于uniapp webview页面与小程序之间传值_uniapp在网页中使用webview发送消息给小程序

uniapp在网页中使用webview发送消息给小程序

最近项目有遇到 小程序内嵌套webview的场景,整站嵌套的,这样就避免不了H5和小程序之间通信,小程序用的uniapp写的,H5是用vue写的,

首先在H5页面引入微信的JS

 <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

然后再引入uniapp 的JS

    <script src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>

然后在H5页面 因为我的H5是用VUE写的 所以这段代码要放在VUE的mounted钩子函数里执行

  1. document.addEventListener('UniAppJSBridgeReady', function() {
  2. uni.postMessage({
  3. data: {
  4. options:'来自H5的问候'
  5. }
  6. });
  7. uni.getEnv(function(res) {
  8. console.log('当前环境:' + JSON.stringify(res));
  9. });
  10. });
  1. uni.postMessage({
  2. data: {
  3. options:'来自H5的问候'
  4. }
  5. });

这个就是H5页面向uniapp页面传值的方法 要传的值一定要写到data里面!!!!!;

这样H5 就布置完了 主要是uniapp 端取值

先附上uniapp webview的文档 https://uniapp.dcloud.io/component/web-view

如文档所说的 在webview标签上绑定 @message,来获取H5传来的值

  1. getMessage(e) {
  2. console.log(e)
  3. let data = e.detail.data
  4. },

这样还不行!!!! 

因为绑定的方法getMessage只有在特定情况下才被会调用

 分享不适合我现在的需求  销毁。。没试,我是在后退这个时机调用取值的

首先把webview页面复制一份,一毛一样的,第一个webview 标签上不绑定message,在复制的webview页面绑定message 取值

第一个webview

	 <web-view :src="src"></web-view>

复制的webview

	 <web-view :src="src" @message="getMessage"></web-view>

然后在第一个webview页面里让页面一加载完就跳到复制的webview页面,额。。要加个判断条件 不然两个页面一直互跳...

  1. //主webview
  2. <template >
  3. <view>
  4. <web-view :src="src"></web-view>
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. src:'https://xxxx',
  12. nav:true,
  13. };
  14. },
  15. onLoad(options) {
  16. if(this.nav){
  17. this.navto()
  18. }
  19. },
  20. methods:{
  21. navto(){
  22. uni.navigateTo({
  23. url:'../nwebview/nwebview'
  24. })
  25. },
  26. }
  27. }
  28. </script>

然后进入复制的webview

  1. <template >
  2. <view>
  3. <web-view :src="src" @message="getMessage"></web-view>
  4. </view>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. src:'https:xxx',
  11. };
  12. },
  13. onLoad(options) {
  14. setTimeout(()=>{
  15. this.navto()
  16. },3000)
  17. },
  18. methods:{
  19. navto(){
  20. var pages = getCurrentPages();
  21. var currPage = pages[pages.length - 1]; //当前页面
  22. var prevPage = pages[pages.length - 2]; //上一个页面
  23. // 然后改变第一个webview的nav状态 ,这样返回之后就不会再次跳过来了
  24. prevPage.nav = false;
  25. uni.navigateBack({
  26. delta:1
  27. })
  28. },
  29. getMessage(e) {
  30. console.log(e.detail.data)
  31. },
  32. }
  33. }
  34. </script>

这样从第一个webview跳过来后 再使用navigateback就达到@message的调用条件了 其他细节就不说了

这样就可以通过getMessage方法来获取H5   传来的值了,

uniapp 给H5传值更简单  只要在webview的src地址上拼接就行了

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