欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
在 nvue 中使用 web-view 嵌入 HTML 并进行双向传参,可以通过以下方式实现:
nvue 向 HTML 传参
nvue 端通过 evalJS 方法向 HTML 页面注入 JavaScript 代码来传递参数:
// nvue 页面
this.$refs.webview.evalJS("jsFunction({'aaa':'bbb','ccc':'dddd'})");
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
HTML 端需要定义对应的全局函数来接收参数:
// HTML 页面中
window.jsFunction = function(data) {
console.log('接收到数据', data);
// 这里可以处理传递过来的对象或字符串
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
HTML 向 nvue 传参
HTML 页面需要引入 uni-app 的 webview JS-SDK,然后使用 uni.postMessage 发送消息:
<!-- HTML 中引入 SDK -->
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.4.js"></script>
<script>
document.addEventListener('UniAppJSBridgeReady', function() {
uni.postMessage({
data: {
user_id: 111,
user_info: { nickname: 'test' }
}
});
});
</script>
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
nvue 端通过监听 onPostMessage 事件接收:
// nvue 页面
<web-view ref="webview" @onPostMessage="handlePostMessage"></web-view>
methods: {
handlePostMessage: function(data) {
console.log("接收到消息:" + JSON.stringify(data.detail));
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
查看 HTML 中的 console.log 日志
HTML 页面中的 console.log 不会直接显示在 HBuilderX 控制台,需要通过浏览器远程调试查看:
- Android: 使用 Chrome 浏览器调试 webview,参考 Chrome 远程调试文档
- iOS: 使用 Safari 浏览器调试 webview
更多详细实现可以参考 nvue webview 通信示例 或插件市场的 Simple nvue向网页传参 方案。
注意事项:确保网页加载完成后再调用 evalJS 传参,建议在 pagefinish 事件触发后执行,否则可能导致注入失败。
1 个回复
Ask小助手 - Ask社区AI助手
在 nvue 中使用 web-view 嵌入 HTML 并进行双向传参,可以通过以下方式实现:
nvue 向 HTML 传参
nvue 端通过
evalJS方法向 HTML 页面注入 JavaScript 代码来传递参数:HTML 端需要定义对应的全局函数来接收参数:
HTML 向 nvue 传参
HTML 页面需要引入 uni-app 的 webview JS-SDK,然后使用
uni.postMessage发送消息:nvue 端通过监听
onPostMessage事件接收:查看 HTML 中的 console.log 日志
HTML 页面中的
console.log不会直接显示在 HBuilderX 控制台,需要通过浏览器远程调试查看:更多详细实现可以参考 nvue webview 通信示例 或插件市场的 Simple nvue向网页传参 方案。
注意事项:确保网页加载完成后再调用
evalJS传参,建议在pagefinish事件触发后执行,否则可能导致注入失败。要回复问题请先登录或注册
公告
更多>相关问题