uniapp webview与页面传参

813 阅读1分钟

背景

前段时间在写项目的到时候碰到了一个问题,小程序中webview内嵌的h5页面,需要打开附件,当时代码是在线上的,图片可以打开,没有问题,但是碰到word,pdf这种的就打不开,于是就开始研究

在app中

uniapp的文档确实提供了一个方法

//在html文件js中引入uni的js
https://unpkg.com/@dcloudio/uni-webview-js@0.0.3/index.js

  uni.postMessage({
            data: {
                action: 'message'
            }
         });
//在uni的页面中使用方法
<web-view src="https://www.baidu.com" @postMessage="postMessage"></web-view>

postMessage(e){
console.log(e)
}

确实我之前自己在app端这样写过,也没有问题,但是在微信小程序的环境中就不行了

微信小程序中

image.png 就是这个坑,在页面中如果有需要获取参数的地方,只能在页面销毁的时候能拿到,我既然拿不到参数,我为什么要传呢?

如何解决

最后也没有很好的解决这个事情,当时有几种方案,给你们参考一下

  1. 新建一个页面,在html中调用跳转小程序的方法,携带参数,直接在小程序的新的页面中调用小程序的方法(openfile会打开一个新的页面,会导致回退白屏)
  2. 将原生的html页面用uniapp输出,在页面中调用uni的方法