m***@163.com
m***@163.com
  • 发布:2023-02-22 17:08
  • 更新:2023-02-22 17:27
  • 阅读:918

uniapp项目打包成APP后 提供jsbridge给webview调用

分类:HTML5+

这个可以实现吗 比如说我想在webview渲染出来的H5里面对APP的路由进行修改

2023-02-22 17:08 负责人:无 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

可以。web-view通过postMessageapp发送消息。app通过evalJSweb-view注入回调.

web-view中:

uni.webView.postMessage({  
    data: {  
        type: '__JSBridge',  
        action: 'getCamera',  
        callBackFn: 'cameraCallBack'  
    }  
})  

window.cameraCallBack = function(e){  
    console.log('ecameraCallBack boredape:>>>>>>>>>>>> todo_tmFilename-:todo_tmLineNumber', e);  
}  

APP:

<web-view src="http://192.168.0.111:8080/#/" @onPostMessage="handlePostMsg" @message="handlePostMsg"></web-view>
handlePostMsg(bridgeData){  
    const {  
        detail: { data: [{ action, type, params, callBackFn }] },  
    } = bridgeData;  
if (type === '__JSBridge') {  
    const pages = getCurrentPages();   
    const childrenPage = pages[pages.length - 1].$getAppWebview().children()[0];  

    uni.chooseImage({  
    success({tempFilePaths}) {  
        // 向webview注入回调  
        page.evalJS(`${callBackFn}('${tempFilePaths}')`)  
    }  
    })  
}  
}
  • 8***@qq.com

    pages[pages.length - 1].$getAppWebview().children() 这里获取就是 报错没有length ,或者$refs.webview 是个{},有小程序向webview通信的方法吗

    2023-09-13 15:56

  • 都广野

    回复 8***@qq.com: 想问一下你最后解决了吗

    2024-07-28 10:37

要回复问题请先登录注册