You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:50:19