uni-app 纯nvue项目webview打开的本地网页中监听不到 plusready事件
uni-app 纯nvue项目webview打开的本地网页中监听不到 plusready事件
测试过的手机:
- 小米 红米 x30
- ipad pro 二代 12.9 ios14
操作步骤:
- 建立一个纯nvue项目,编译模式uniapp
- 建立hybrid/html目录,目录中建立index.html文件,里面写入 plusready 监听
- 建立一个nvue页面,页面中使用 webview打开第二步建立的index.html文件
- 测试plusready事件
预期结果:
- plusready事件能监听到,可以执行事件回调代码
实际结果:
- 未执行到
bug描述:
纯nvue项目webview打开的本地网页中监听不到 plusready事件
- manifest.json-纯nvue项目,nvue编译模式-uniapp
- 在nvue页面中,使用webview打开 本地 hybrid/html/index.html 网页,此网页中无法监听到 plusready 事件
// .nvue 代码 <web-view :style="'width:' + width + 'px;height:' + height + 'px'" src="/hybrid/html/index.html"></web-view> // index.html 中代码 if(window.plus){ alert(1) //此两处代码永远无法执行到 }else{ document.addEventListener("plusready", function(){ alert('aaaaaaaaa') //此两处代码永远无法执行到 }, false); } - 测试设备 红米x30 android10 ipad pro ios14
更多关于uni-app 纯nvue项目webview打开的本地网页中监听不到 plusready事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
额,好吧 “app-nvue页面的web-view组件不能运行plus API” 这句话太不起眼了,这么重要的事项,建议粗体标记下。还以为是bug呢
webview文档中的注意事项已经说明了nvue无法使用plus的API,如果想调用的话,建议使用uni.webview.js调用uni部分api或者使用页面通讯完成。
好的,3q
这是一个已知的nvue架构限制问题。在纯nvue项目中,webview组件加载的本地HTML页面无法直接访问5+ API,因此监听不到plusready事件。
原因分析:
- nvue页面的webview组件与vue页面的webview实现机制不同
- 纯nvue环境下,webview中的页面运行在独立的渲染进程中,无法直接获取到5+运行环境
- plus对象和5+事件系统在nvue的webview中不可用
解决方案:
- 使用vue页面替代:将webview页面改为vue页面,vue环境下的webview可以正常使用5+ API
- 通过postMessage通信:在nvue页面中监听webview的消息,通过evalJS方式向webview注入代码
// nvue页面 const webview = this.$refs.webview webview.addEventListener('message', (e) => { // 处理来自webview的消息 }) // 向webview注入代码 webview.evalJS('yourCode()')


