webview: github.com/zserge/webview Index | Examples | Files

package webview

import "github.com/zserge/webview"


w := New(true)
defer w.Destroy()
w.Bind("noop", func() string {
    return "hello"
w.Bind("add", func(a, b int) int {
    return a + b
w.Bind("quit", func() {
		<!doctype html>
				window.onload = function() {
					document.body.innerText = ` + "`hello, ${navigator.userAgent}`" + `;
					noop().then(function(res) {
						console.log('noop res', res);
						add(1, 2).then(function(res) {
							console.log('add res', res);



Package Files



const (
    // Width and height are default size

    // Window size can not be changed by a user

    // Width and height are minimum bounds

    // Width and height are maximum bounds

type Hint Uses

type Hint int

Hints are used to configure window sizing and resizing

type WebView Uses

type WebView interface {

    // Run runs the main loop until it's terminated. After this function exits -
    // you must destroy the webview.

    // Terminate stops the main loop. It is safe to call this function from
    // a background thread.

    // Dispatch posts a function to be executed on the main thread. You normally
    // do not need to call this function, unless you want to tweak the native
    // window.
    Dispatch(f func())

    // Destroy destroys a webview and closes the native window.

    // Window returns a native window handle pointer. When using GTK backend the
    // pointer is GtkWindow pointer, when using Cocoa backend the pointer is
    // NSWindow pointer, when using Win32 backend the pointer is HWND pointer.
    Window() unsafe.Pointer

    // SetTitle updates the title of the native window. Must be called from the UI
    // thread.
    SetTitle(title string)

    // SetSize updates native window size. See Hint constants.
    SetSize(w int, h int, hint Hint)

    // Navigate navigates webview to the given URL. URL may be a data URI, i.e.
    // "data:text/text,<html>...</html>". It is often ok not to url-encode it
    // properly, webview will re-encode it for you.
    Navigate(url string)

    // Init injects JavaScript code at the initialization of the new page. Every
    // time the webview will open a the new page - this initialization code will
    // be executed. It is guaranteed that code is executed before window.onload.
    Init(js string)

    // Eval evaluates arbitrary JavaScript code. Evaluation happens asynchronously,
    // also the result of the expression is ignored. Use RPC bindings if you want
    // to receive notifications about the results of the evaluation.
    Eval(js string)

    // Bind binds a callback function so that it will appear under the given name
    // as a global JavaScript function. Internally it uses webview_init().
    // Callback receives a request string and a user-provided argument pointer.
    // Request string is a JSON array of all the arguments passed to the
    // JavaScript function.
    // f must be a function
    // f must return either value and error or just error
    Bind(name string, f interface{}) error

func New Uses

func New(debug bool) WebView

New calls NewWindow to create a new window and a new webview instance. If debug is non-zero - developer tools will be enabled (if the platform supports them).

func NewWindow Uses

func NewWindow(debug bool, window unsafe.Pointer) WebView

NewWindow creates a new webview instance. If debug is non-zero - developer tools will be enabled (if the platform supports them). Window parameter can be a pointer to the native window handle. If it's non-null - then child WebView is embedded into the given parent window. Otherwise a new window is created. Depending on the platform, a GtkWindow, NSWindow or HWND pointer can be passed here.

Package webview imports 7 packages (graph) and is imported by 17 packages. Updated 2020-03-30. Refresh now. Tools for package owners.