Documentation ¶
Overview ¶
Package js gives access to the WebAssembly host environment when using the js/wasm architecture. Its API is based on JavaScript semantics.
This package is EXPERIMENTAL. Its current scope is only to allow tests to run, but not yet to provide a comprehensive API for users. It is exempt from the Go compatibility promise.
Index ¶
- type Callback
- type Error
- type EventCallbackFlag
- type Type
- type TypedArray
- type Value
- func (v Value) Bool() bool
- func (v Value) Call(m string, args ...interface{}) Value
- func (v Value) Float() float64
- func (v Value) Get(p string) Value
- func (v Value) Index(i int) Value
- func (v Value) InstanceOf(t Value) bool
- func (v Value) Int() int
- func (v Value) Invoke(args ...interface{}) Value
- func (v Value) Length() int
- func (v Value) New(args ...interface{}) Value
- func (v Value) Set(p string, x interface{})
- func (v Value) SetIndex(i int, x interface{})
- func (v Value) String() string
- func (v Value) Type() Type
- type ValueError
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Callback ¶
type Callback struct { Value // the JavaScript function that queues the callback for execution // contains filtered or unexported fields }
Callback is a Go function that got wrapped for use as a JavaScript callback.
func NewCallback ¶
NewCallback returns a wrapped callback function.
Invoking the callback in JavaScript will queue the Go function fn for execution. This execution happens asynchronously on a special goroutine that handles all callbacks and preserves the order in which the callbacks got called. As a consequence, if one callback blocks this goroutine, other callbacks will not be processed. A blocking callback should therefore explicitly start a new goroutine.
Callback.Release must be called to free up resources when the callback will not be used any more.
Example ¶
var cb js.Callback cb = js.NewCallback(func(args []js.Value) { fmt.Println("button clicked") cb.Release() // release the callback if the button will not be clicked again }) js.Global().Get("document").Call("getElementById", "myButton").Call("addEventListener", "click", cb)
Output:
func NewEventCallback ¶
func NewEventCallback(flags EventCallbackFlag, fn func(event Value)) Callback
NewEventCallback returns a wrapped callback function, just like NewCallback, but the callback expects to have exactly one argument, the event. Depending on flags, it will synchronously call event.preventDefault, event.stopPropagation and/or event.stopImmediatePropagation before queuing the Go function fn for execution.
type Error ¶
type Error struct { // Value is the underlying JavaScript error value. Value }
Error wraps a JavaScript error.
type EventCallbackFlag ¶
type EventCallbackFlag int
const ( // PreventDefault can be used with NewEventCallback to call event.preventDefault synchronously. PreventDefault EventCallbackFlag = 1 << iota // StopPropagation can be used with NewEventCallback to call event.stopPropagation synchronously. StopPropagation // StopImmediatePropagation can be used with NewEventCallback to call event.stopImmediatePropagation synchronously. StopImmediatePropagation )
type TypedArray ¶
type TypedArray struct {
Value
}
TypedArray represents a JavaScript typed array.
func TypedArrayOf ¶
func TypedArrayOf(slice interface{}) TypedArray
TypedArrayOf returns a JavaScript typed array backed by the slice's underlying array.
The supported types are []int8, []int16, []int32, []uint8, []uint16, []uint32, []float32 and []float64. Passing an unsupported value causes a panic.
TypedArray.Release must be called to free up resources when the typed array will not be used any more.
func (TypedArray) Release ¶
func (a TypedArray) Release()
Release frees up resources allocated for the typed array. The typed array and its buffer must not be accessed after calling Release.
type Value ¶
type Value struct {
// contains filtered or unexported fields
}
Value represents a JavaScript value.
func Global ¶
func Global() Value
Global returns the JavaScript global object, usually "window" or "global".
func ValueOf ¶
func ValueOf(x interface{}) Value
ValueOf returns x as a JavaScript value:
| Go | JavaScript | | ---------------------- | ---------------------- | | js.Value | [its value] | | js.TypedArray | typed array | | js.Callback | function | | nil | null | | bool | boolean | | integers and floats | number | | string | string | | []interface{} | new array | | map[string]interface{} | new object |
func (Value) Call ¶
Call does a JavaScript call to the method m of value v with the given arguments. It panics if v has no method m. The arguments get mapped to JavaScript values according to the ValueOf function.
func (Value) Float ¶
Float returns the value v as a float64. It panics if v is not a JavaScript number.
func (Value) InstanceOf ¶
InstanceOf reports whether v is an instance of type t according to JavaScript's instanceof operator.
func (Value) Int ¶
Int returns the value v truncated to an int. It panics if v is not a JavaScript number.
func (Value) Invoke ¶
Invoke does a JavaScript call of the value v with the given arguments. It panics if v is not a function. The arguments get mapped to JavaScript values according to the ValueOf function.
func (Value) New ¶
New uses JavaScript's "new" operator with value v as constructor and the given arguments. It panics if v is not a function. The arguments get mapped to JavaScript values according to the ValueOf function.
type ValueError ¶
A ValueError occurs when a Value method is invoked on a Value that does not support it. Such cases are documented in the description of each method.
func (*ValueError) Error ¶
func (e *ValueError) Error() string