Wails中DOM就绪时如何从Go向JavaScript发送数据?
在DOM就绪时从Go向JavaScript发送数据的实现方案
Go端domReady函数修改
假设你使用的是Webview类Go框架(如webview/webview),可以通过框架提供的Eval方法执行前端JavaScript代码,将数据传递过去:
import ( "encoding/json" "fmt" "context" ) func (a App) domReady(ctx context.Context) { // 准备要传递的数据,这里以map为例,也可以用自定义结构体 sendData := map[string]interface{}{ "content": "这是来自Go的消息", "status": "success", } // 将数据序列化为JSON字符串,确保能被JS解析 jsonStr, err := json.Marshal(sendData) if err != nil { // 处理序列化错误 return } // 调用前端预先定义的JS函数,传递数据 a.webview.Eval(ctx, fmt.Sprintf("handleGoData(%s)", jsonStr)) }
前端JavaScript处理
在index.html的script标签中,需要预先定义接收Go数据的函数,用于处理传递过来的内容:
<script> // 定义接收Go数据的函数 function handleGoData(data) { // 打印数据到控制台查看 console.log("来自Go的数据:", data); // 示例:将数据渲染到页面DOM中 const container = document.createElement('div'); container.textContent = `消息:${data.content},状态:${data.status}`; document.body.appendChild(container); } </script>
核心逻辑说明
- Go端:在DOM就绪的
domReady函数中,把数据序列化为JSON格式(避免类型兼容问题),通过框架的JS执行接口(如Eval)调用前端的接收函数。 - 前端:提前声明接收函数,收到数据后可直接进行DOM操作或其他业务处理。
内容的提问来源于stack exchange,提问作者bsbak
相关产品推荐
相关产品推荐

