uni-app 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钩子函数里执行
-
document.addEventListener('UniAppJSBridgeReady', function() {
-
uni.postMessage({
-
data: {
-
options:'来自H5的问候'
-
}
-
});
-
uni.getEnv(function(res) {
-
console.log('当前环境:' JSON.stringify(res));
-
});
-
});
-
uni.postMessage({
-
data: {
-
options:'来自H5的问候'
-
}
-
});
这个就是H5页面向uniapp页面传值的方法 要传的值一定要写到data里面!!!!!;
这样H5 就布置完了 主要是uniapp 端取值
先附上uniapp webview的文档 https://uniapp.dcloud.io/component/web-view
如文档所说的 在webview标签上绑定 @message,来获取H5传来的值
-
getMessage(e) {
-
console.log(e)
-
let data = e.detail.data
-
},
这样还不行!!!!
因为绑定的方法getMessage只有在特定情况下才被会调用
分享不适合我现在的需求 销毁。。没试,我是在后退这个时机调用取值的
首先把webview页面复制一份,一毛一样的,第一个webview 标签上不绑定message,在复制的webview页面绑定message 取值
第一个webview
<web-view :src="src"></web-view>
复制的webview
<web-view :src="src" @message="getMessage"></web-view>
然后在第一个webview页面里让页面一加载完就跳到复制的webview页面,额。。要加个判断条件 不然两个页面一直互跳...
-
-
-
-
//主webview
-
-
<template >
-
<view>
-
<web-view :src="src"></web-view>
-
-
</view>
-
</template>
-
-
<script>
-
export default {
-
-
data() {
-
return {
-
src:'https://xxxx',
-
nav:true,
-
};
-
},
-
onLoad(options) {
-
if(this.nav){
-
this.navto()
-
}
-
-
},
-
methods:{
-
navto(){
-
uni.navigateTo({
-
url:'../nwebview/nwebview'
-
})
-
},
-
-
}
-
}
-
</script>
然后进入复制的webview
-
<template >
-
<view>
-
<web-view :src="src" @message="getMessage"></web-view>
-
-
</view>
-
</template>
-
-
<script>
-
export default {
-
-
data() {
-
return {
-
src:'https:xxx',
-
-
};
-
},
-
onLoad(options) {
-
-
setTimeout(()=>{
-
this.navto()
-
},3000)
-
-
},
-
-
methods:{
-
navto(){
-
var pages = getCurrentPages();
-
var currPage = pages[pages.length - 1]; //当前页面
-
var prevPage = pages[pages.length - 2]; //上一个页面
-
// 然后改变第一个webview的nav状态 ,这样返回之后就不会再次跳过来了
-
prevPage.nav = false;
-
uni.navigateBack({
-
delta:1
-
})
-
},
-
getMessage(e) {
-
console.log(e.detail.data)
-
-
-
-
},
-
}
-
}
-
</script>
-
这样从第一个webview跳过来后 再使用navigateback就达到@message的调用条件了 其他细节就不说了
这样就可以通过getMessage方法来获取H5 传来的值了,
uniapp 给H5传值更简单 只要在webview的src地址上拼接就行了
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfacjc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01