// Google Search: html history api
// https://css-tricks.com/using-the-html5-history-api/
package main
import "github.com/gopherjs/gopherjs/js"
var history = js.Global.Get("history")
func main() {
d := js.Global.Get("document")
info := d.Call("getElementById", "info")
nodeList := d.Call("querySelectorAll", ".person")
length := nodeList.Get("length").Int()
for i := 0; i < length; i++ {
// get i-th element in nodelist
elm := nodeList.Call("item", i)
elm.Call("addEventListener", "click", func(event *js.Object) {
event.Call("preventDefault")
href := elm.Call("getAttribute", "href").String()
content := elm.Get("dataset").Get("content").String()
history.Call("pushState", content, nil, href)
info.Set("innerHTML", content)
})
}
js.Global.Call("addEventListener", "popstate", func(event *js.Object) {
if event.Get("state") == nil {
info.Set("innerHTML", "Entry Page")
} else {
info.Set("innerHTML", event.Get("state").String())
}
})
}