【发布时间】:2019-03-29 01:52:11
【问题描述】:
我正在尝试从 https://github.com/golang/go/wiki/WebAssembly 扩展“Hello WebAssembly”示例。如给定的那样,该示例只是将一条消息打印到控制台。我想添加一些代码使用syscall/js 来替换正文元素内容。
下面的尝试构建失败:
package main
import (
"fmt"
"syscall/js"
)
func main() {
fmt.Println("Hello, WebAssembly!") // original example
// I added
doc := js.Global().Get("document")
body := doc.Call("getElementById", "thebody")
body.innerHTML = "Dynamic Content"
}
当我尝试使用 $ env GOOS=js GOARCH=wasm go build -o main.wasm 构建时
我得到:
./wasm.go:14:6: body.innerHTML undefined (type js.Value has no field or method innerHTML)
仔细想想并不奇怪,但我在https://godoc.org/syscall/js 的文档中没有看到解释如何获取和设置元素属性的示例。
【问题讨论】:
-
1) “这个包是实验性的。它目前的范围只是允许测试运行,但还没有为用户提供一个全面的 API。” 2) JS 和 DOM 是两个不同的东西。 JS 包允许您调用 JS 函数,它不包含 JS DOM 的完整 Go 实现。 3) 您发布的 Wiki 链接建议使用 github.com/dennwc/dom 进行 DOM 操作。你试过了吗?
-
@Adrian 谢谢。我查看了 DOM 库。稍后它可能会很有用,但我喜欢在我还在采取婴儿步骤时避免额外的包裹。目前,icza 的回答满足了我的需求。
标签: go webassembly