|
|
|
@ -0,0 +1,61 @@ |
|
|
|
go-dom |
|
|
|
------ |
|
|
|
|
|
|
|
**This package is a work in progress** |
|
|
|
|
|
|
|
The `go-dom` package exposes the [Web API Spec](https://spec.whatwg.org/) as a Go package. |
|
|
|
|
|
|
|
This package is mostly just wrappers around calls to [syscall/js](https://tip.golang.org/pkg/syscall/js/) |
|
|
|
to expose the browser Web API in a Go friendly manner. |
|
|
|
|
|
|
|
This package's code is generated from [WebIDL](https://heycam.github.io/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 |
|
|
|
|
|
|
|
```go |
|
|
|
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. |
|
|
|
|
|
|
|
```go |
|
|
|
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. |