From 68f1d915a88b8fc09f2adb41ac559bde77c468bc Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Tue, 27 Jan 2015 01:00:35 -0800 Subject: [PATCH] select_menu: Initial investigation to fix navigating back issue #3. --- select_menu/backend.go | 4 ++++ select_menu/frontend.go | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/select_menu/backend.go b/select_menu/backend.go index e0f571f..7e0cda5 100644 --- a/select_menu/backend.go +++ b/select_menu/backend.go @@ -61,6 +61,10 @@ func New(options []string, defaultOption string, query url.Values, queryParamete // HACK: Don't use Sprintf, properly encode (as json at this time). Val: fmt.Sprintf(`SelectMenuOnInput(event, this, %q, %q);`, strconv.Quote(defaultOption), strconv.Quote(queryParameter)), }) + selectElement.Attr = append(selectElement.Attr, html.Attribute{ + Key: "onload", + Val: `alert('loaded');`, + }) html, err := html_gen.RenderNodes(selectElement) if err != nil { diff --git a/select_menu/frontend.go b/select_menu/frontend.go index f0dc675..8ca6217 100644 --- a/select_menu/frontend.go +++ b/select_menu/frontend.go @@ -31,5 +31,15 @@ func SelectMenuOnInput(event dom.Event, object dom.HTMLElement, defaultOption, q query.Set(queryParameter, selected) } + var originalSelected int + options := selectElement.Underlying().Get("options") + for i := 0; i < options.Length(); i++ { + if options.Index(i).Get("defaultSelected").Bool() { + originalSelected = i + break + } + } + selectElement.Underlying().Set("selectedIndex", originalSelected) + dom.GetWindow().Location().Search = "?" + query.Encode() }