go - 如何通过Web程序集访问Go中的JS对象

标签 go webassembly

我正在使用 go build wasm 文件在浏览器上运行,我能够将简单的整数字符串值传递给方法,但无法传递复杂的对象、键值对或数组

这是我的方法

func Transform(jsV js.Value, inputs []js.Value) interface{} {
    message := inputs[0].String()
    fmt.Println(inputs)  // How to access objects here 
    h := js.Global().Get("document").Call("getElementById", "message")
    h.Set("textContent", message)
    return nil
}

func init() {
    fmt.Println("Hello, WebAssembly!")
    c = make(chan bool)
}

func main() {
    js.Global().Set("Transform", js.FuncOf(Transform))
    println("Done.. done.. done...")
    <-c
}

当我传递像 {name:"Something"} 这样的对象时,它只打印对象,我在文档中进行了搜索,但找不到任何链接

最佳答案

如果您将 Transform 调用为:

globalThis.Transform({name:"Something"})

在这种情况下,inputs[0] 就是对象。为了获取 name 属性,您应该使用 Get:

message := inputs[0].Get("name").String()

对于数组,您有.Index(),对于对象(如上所示),您有.Get()

关于go - 如何通过Web程序集访问Go中的JS对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71131445/

相关文章:

rust - 如何在Yew应用程序中包括 sleep 功能?

html - Docker未反射(reflect)对HTML文件的更改

c++ - clang 编译为目标 wasm 时 undefined symbol

java - 组合使用不同高级语言编程的两个 webassembly 组件

go - 我应该如何在 Kubernetes 中检查我的 go 服务的健康状况?

java - 如何通过 go lang 运行 maven 插件

go - gopacket中的tcp assembly包如何使用?

github - 解析 access_token 的 Github 响应

go - 关于缺少 "Unimplemented"服务器方法的 gRPC 错误

azure - AADSTS9002325 : Proof Key for Code Exchange is required for cross-origin authorization code redemption - Published on Azure