tony马
tony马
  • 发布:2019-10-15 21:26
  • 更新:2021-04-23 13:43
  • 阅读:3360

app如何向webview中的页面传递数据?

分类:uni-app

官网里面只提供了从webview页面传递消息到APP端,那么从APP端如何传送数据到webview页面呢?

2019-10-15 21:26 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

  1. 加载url时可以传递。
  2. 以后也可以通过plus.webview的evaljs方法传递
  • tony马 (作者)

    好的,谢谢

    2019-10-15 22:30

  • tony马 (作者)

    你好,我用evaljs总是提示我

    20:09:42.481 [JS Framework] Failed to execute the callback function:

    20:09:42.503 ReferenceError: Can't find variable: alert

    20:09:42.523 10:36.802 31925 31949 E console : [ERROR] reportJSException >>>> exception function:callJS, exception:JavaScript execute error!Exception: ReferenceError: Can't find variable: alert

    是我使用的问题还是其他原因? uni端的代码是plus.webview.currentWebview().evalJS('alert("123")'),我想向webview页面发送消息,但是不起作用。。。还有我用plus.webview.getWebviewById也总是提示我找不到该webview

    2019-10-16 20:12

  • DCloud_heavensoft

    回复 tony马: https://ask.dcloud.net.cn/article/35036

    2019-10-16 21:13

h***@sina.com

h***@sina.com

写在前面:重要!h5页面(我用的vue),一定要用alert查看结果,console的日志会显示到hbuilerx的控制台里,结果会一直为空(坑死),我的版本是2.9.5。

从h5向uniapp传值,网上的两种方法确实都可以,url加问号传参,或者plus.webview.create(url, id, style, {data:{}})的第四个参数传参,alert能直接打印出来传递的参数

步骤一、uniapp代码:

let wv = plus.webview.create( 'http://www.baidu.com/#/clientEdit?aa=1&bb=2','mendMerchant', {
top:'66px',
height:'92%',
},{data:this.userInfo}) //this.userInfo是我要传的对象,不用data键值对的方式传的话,h5接收后会是多个字段,而非一个对象
let currentWebview = this.$mp.page.$getAppWebview()
currentWebview.append(wv);

步骤二、

h5代码 (weiview src引用的h5页面代码,h5我用的vue,另外,js原生支持plus对象,不需要引入外部资源支持):

方式一,获取plus.webview.create第四个参数传来的值:

document.addEventListener("plusready",function (){
alert(JSON.stringify(plus.webview.getWebviewById("mendMerchant").data)) //data与uniapp里定义的键名保持一致,那里也是定义的data:this.userInfo
},false);

方式二(url获取):alert(this.$route.query.aa)

亲测可以,qq 372094494,有问题可以交流

该问题目前已经被锁定, 无法添加新回复