[Golang] GopherJS Synonyms with JavaScript
Inspired by [4], Golang/GopherJS (with / without GopherJS bindings for the JavaScript DOM APIs) synonyms with JavaScript.
JavaScript | GopherJS | GopherJS with DOM binding |
---|---|---|
// no need to import anything
|
import "github.com/gopherjs/gopherjs/js"
|
import "honnef.co/go/js/dom"
|
The window object window
|
type Object js.Global
|
GetWindow() function dom.GetWindow()
|
alert("Hello World")
|
js.Global.Call("alert", "Hello World")
|
dom.GetWindow().Alert("Hello World")
|
document
|
js.Global.Get("document")
|
dom.GetWindow().Document()
|
navigator Object window.navigator
|
js.Global.Get("navigator")
|
dom.GetWindow().Navigator()
|
window.navigator.language
window.navigator.languages
|
js.Global.Get("navigator").Get("language").String()
js.Global.Get("navigator").Get("languages").String()
|
// not implemented
|
element = document.getElementById("foo");
|
element := js.Global.Get("document").Call("getElementById", "foo")
|
element := dom.GetWindow().Document().GetElementByID("foo")
|
HTML DOM innerHTML property // read
var value = document.getElementById("foo").innerHTML;
// set
document.getElementById("foo").innerHTML = "new value";
|
element := js.Global.Get("document").Call("getElementById", "foo")
// read
value := element.Get("innerHTML").String()
// set
element.Set("innerHTML", "new value")
|
element := dom.GetWindow().Document().GetElementByID("foo")
// read
value := element.InnerHTML()
// set
element.SetInnerHTML("new value")
|
HTML DOM textContent property // read
var value = document.getElementById("foo").textContent;
// set
document.getElementById("foo").textContent = "new value";
|
element := js.Global.Get("document").Call("getElementById", "foo")
// read
value := element.Get("textContent").String()
// set
element.Set("textContent", "new value")
|
element := dom.GetWindow().Document().GetElementByID("foo")
// read
value := element.TextContent()
// set
element.SetTextContent("new value")
|
Event binding - addEventListener() var foo = document.getElementById("foo");
// register onclick event
foo.addEventListener("click", function(event) {
// do something
event.preventDefault()
}, false);
|
foo := js.Global.Get("document").Call("getElementById", "foo")
// register onclick event
foo.Call("addEventListener", "click", func(event *js.Object) {
// do something
event.Call("preventDefault")
}, false)
|
foo := dom.GetWindow().Document().GetElementByID("foo")
// register onclick event
foo.AddEventListener("click", false, func(event dom.Event) {
// do something
event.PreventDefault()
})
|
Remove all child nodes of a DOM element var foo = document.getElementById("foo");
while (foo.hasChildNodes()) {
foo.removeChild(foo.lastChild);
}
|
foo := js.Global.Get("document").Call("getElementById", "foo")
for foo.Call("hasChildNodes").Bool() {
foo.Call("removeChild", foo.Get("lastChild"))
}
|
foo := dom.GetWindow().Document().GetElementByID("foo")
// assume foo is a div element, type assertion.
f := foo.(*dom.HTMLDivElement)
for f.HasChildNodes() {
f.RemoveChild(f.LastChild())
}
|
JavaScript | GopherJS |
---|---|
createElement: create a DOM element var div = document.createElement("div");
|
div := js.Global.Get("document").Call("createElement", "div")
|
createTextNode: create a text node var text = document.createTextNode("Hello World!");
|
text := js.Global.Get("document").Call("createTextNode", "Hello World!")
|
The location object of window object: // current URL: http://localhost:8000/code/gopherjs/window-location/index.html?a=1
// return - http://localhost:8000/code/gopherjs/window-location/index.html?a=1
window.location.href
// return - /code/gopherjs/window-location/index.html
window.location.pathname
// return - ?a=1
window.location.search
|
// current URL: http://localhost:8000/code/gopherjs/window-location/index.html?a=1
var location = js.Global.Get("location")
// return - http://localhost:8000/code/gopherjs/window-location/index.html?a=1
location.Get("href").String()
// return - /code/gopherjs/window-location/index.html
location.Get("pathname").String()
// return - ?a=1
location.Get("search").String()
|
JavaScript | GopherJS |
---|---|
querySelector returns a DOM element var elm = document.querySelector(".myclass");
|
d := js.Global.Get("document")
elm := d.Call("querySelector", ".myclass")
|
querySelectorAll returns a NodeList var elmList = document.querySelectorAll("div");
for (var i = 0; i < elmList.length; ++i) {
var elm = elmList[i];
// do something with the element
}
|
d := js.Global.Get("document")
nodeList := d.Call("querySelectorAll", "div")
length := nodeList.Get("length").Int()
for i := 0; i < length; i++ {
elm := nodeList.Call("item", i)
// do something with the element
}
|
Test if an element contains a class if (element.classList.contains("myClassName")) {
// do something
}
|
if element.Get("classList").Call("contains", "myClassName").Bool() {
// do something
}
|
Tested on:
- Ubuntu Linux 16.10
- Go 1.7.4,
- Chromium Version 55.0.2883.87 Built on Ubuntu , running on Ubuntu 16.10 (64-bit).
References:
[1] | GopherJS - A compiler from Go to JavaScript (GitHub, GopherJS Playground, ) |
[2] | Bindings · gopherjs/gopherjs Wiki · GitHub |
[3] | dom - GopherJS bindings for the JavaScript DOM APIs (GitHub) |
[4] | Synonyms - Dart, JavaScript, C#, Python | Dart |