背景
前段时间在写项目的到时候碰到了一个问题,小程序中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端这样写过,也没有问题,但是在微信小程序的环境中就不行了
微信小程序中
就是这个坑,在页面中如果有需要获取参数的地方,只能在页面销毁的时候能拿到,我既然拿不到参数,我为什么要传呢?
如何解决
最后也没有很好的解决这个事情,当时有几种方案,给你们参考一下
- 新建一个页面,在html中调用跳转小程序的方法,携带参数,直接在小程序的新的页面中调用小程序的方法(openfile会打开一个新的页面,会导致回退白屏)
- 将原生的html页面用uniapp输出,在页面中调用uni的方法