/go-dom

Web API package for use when compling Go to WASM

Primary LanguageGo

go-dom

This package is a work in progress

The go-dom package exposes the Web API Spec as a Go package.

This package is mostly just wrappers around calls to syscall/js to expose the browser Web API in a Go friendly manner.

This package's code is generated from WebIDL definitions for the various Web API Specs.

Examples

These examples can be compiled and run using GOARCH=wasm GOOS=js as described at https://github.com/golang/go/wiki/WebAssembly

Find all div elements and print them to the console

package main

import (
    "github.com/brettlangdon/go-dom/console"
    "github.com/brettlangdon/go-dom/document"
)

func main() {
    nodes := document.QuerySelectorAll("div")
    for i := 0; i < nodes.GetLength(); i++ {
        console.Dir(nodes.Item(0))
    }
}

Add a click handler to document which prints the event information.

package main

import (
    dom "github.com/brettlangdon/go-dom"
    "github.com/brettlangdon/go-dom/console"
    "github.com/brettlangdon/go-dom/document"
)

func main() {
    loop := dom.NewLoop()

    document.AddEventListener("click", dom.NewEventHandler(func(evt dom.Event) {
        console.Dir(evt)
    }))

    loop.Loop()
}

This last example uses a dom.Loop which is used to keep the program running instead of exiting.

If the Go program exits then the callback handlers will no longer execute.

Calling loop.Stop() will cause the Go program to exit.