一、app向webview发送数据(传参),在index.vue页面
1、通过url传参<view class="html-box"> <web-view :src="'../../../hybrid/html/viewContract/index.html?data=' + obj" @message="getMessage" ref="wv"></web-view></view>2、通过evalJS("uniEvent(`${params}`)")data() { return { currentWebview: null, obj: null } },onLoad() { const self = this; self.currentWebview = self.$scope.$getAppWebview().children()[0] //传递大量数据 self.currentWebview.evalJS(`getParams(${JSON.stringify(res)})`)},methods: { saveContract() {//app通过事件向html发送数据 const self = this; self.currentWebview.evalJS("uniEvent('saveContract')"); },}
二、webview接管app发来的数据(传参),在/hybrid/html/viewContract/index.html页面
1、通过url接管参数<script type="text/javascript"> console.log('接管url参数', decodeURIComponent(location.href.split('data=')[1]))</script>2、通过evalJS定义的办法接管参数<script type="text/javascript"> let dianziHetong = null; window.getParams = (data) => { console.log("webview外部:", data) dianziHetong = data console.log(dianziHetong) } window.uniEvent = function(data) { console.log('app发来的数据', data) }</script>
三、webview向app发送数据(传参),在/hybrid/html/viewContract/index.html页面
1、通过uni.postMessage()<script src="../js/uni-webview.js"></script><script type="text/javascript"> document.addEventListener('UniAppJSBridgeReady', function() { uni.postMessage({ data: { msg: 'saveContract', content: editor.txt.html() } }); })</script>
四、app接管webview发来的数据(传参),在index.vue页面
1、通过绑定事件getMessage获取getMessage(e) { console.log('接管webview发来的数据', e.detail)},