PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > HBuilderX教程 > 正文

    web-view实现网页html和uniapp之间的通信

    作者:admin来源:网络浏览:时间:2021-01-19 13:10:44我要评论
    导读:使用web-view实现了加载html文件预览pdf文件的功能,但是在预览pdf文件的时候,可以点击返回按钮返回上一个页面,前提是在pdf文件的预览页面默认的顶部导航都去掉的情况下。

    使用web-view实现了加载html文件预览pdf文件的功能,但是在预览pdf文件的时候,可以点击返回按钮返回上一个页面,前提是在pdf文件的预览页面默认的顶部导航都去掉的情况下。



    解决方案:

    一、引入依赖文件

    在 web-view 加载的 HTML 中调用 uni 的 API,需要在 HTML 中引用必要的 JS-SDK

    1. <!-- 微信 JS-SDK 如果不需要兼容小程序,则无需引用此 JS 文件。 -->  
    2. <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>  
    3. <!-- uni 的 SDK,必须引用。 -->  
    4. <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.0.1.52.js"></script> 

    注:

    这些 JS 文件是在 web-view 加载的那个 HTML 文件中引用的,而不是 uni-app 项目中的文件。
    如果不考虑微信小程序,则无需引入微信的 JS-SDK。
    两个文件同时引入时,注意引入的顺序,微信的需要在前。

    二、从 HTML 向应用发送消息,实现点击返回页面跳转

    uni.postMessage 中的参数格式,必须是 data: {}。也就是说,传递的消息信息必须在 data 这个对象中。

    1. <div class="back" id="pdfBack"><img src="../../../static/image/back_arrow.png"></div> 
    2. <script> 
    3.         document.addEventListener('UniAppJSBridgeReady'function() {  
    4.             console.log('UniAppJSBridgeReady'); 
    5.             document.querySelector('#pdfBack').addEventListener('click'function(evt) {  
    6.                 uni.postMessage({  
    7.                     data: {  
    8.                         action: 'back'  
    9.                     }  
    10.                 }); 
    11.             });  
    12.         }); 
    13.         
    14. </script> 

    注:

    每次执行 postMessage 后,传递的消息会以数组的形式存放。因此,在 web-view 的 message 事件回调中,接收到的 event.detail.data 的值是一个数组。

    三、在uniapp 中接受信息back

    监听 web-view 的 message 事件,必须是@message,然后在事件回调的 event.detail.data 中接收传递过来的消息。

    1. <template>  
    2.     <view>  
    3.         <web-view src="http://www.yourdomain.com/test.html" @message="handleMessage"></web-view>  
    4.     </view>  
    5. </template>  
    6.  
    7. <script>  
    8.     export default {  
    9.         methods: {  
    10.             handleMessage(evt) {  
    11.                 console.log('接收到的消息:' + JSON.stringify(evt.detail.data)); 
    12.           uni.navigateBack(); 
    13.  
    14.             }  
    15.         }  
    16.     }  
    17. </script> 


    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-146-6485-1.html
    相关热词搜索: uniapp通信
    下一篇:uniapp微信支付