[Restore scoll position over form reloads Joachim Breitner **20100828104821 Ignore-this: cf1800192b67c3a3f9c376d185255793 ] hunk ./b18n-combined-cgi.hs 18 -page code pageContent = +page code scrollX scrollY pageContent = hunk ./b18n-combined-cgi.hs 22 - script ! [ thetype "text/javascript", src "?jquery" ] << noHtml + script ! [ thetype "text/javascript", src "?jquery" ] << noHtml +++ + script ! [ thetype "text/javascript" ] << cdata jsCode hunk ./b18n-combined-cgi.hs 25 - body << ( + body ! [ strAttr "onload" "restoreScroll()" ] << ( hunk ./b18n-combined-cgi.hs 42 - form ! [method "POST", action "#"] << ( + form ! [method "POST", + action "#", + strAttr "onsubmit" "saveScroll()" + ] << ( + hidden "scrollx" scrollX +++ + hidden "scrolly" scrollY +++ hunk ./b18n-combined-cgi.hs 180 - setHeader "Content-type" "text/xml; charset=UTF-8" + setHeader "Content-type" "application/xhtml+xml; charset=UTF-8" hunk ./b18n-combined-cgi.hs 207 + scrollX <- fromMaybe "0" <$> getInput "scrollx" + scrollY <- fromMaybe "0" <$> getInput "scrolly" hunk ./b18n-combined-cgi.hs 210 - outputFPS $ fromString $ showHtml $ page code $ + outputFPS $ fromString $ showHtml $ page code scrollX scrollY $ hunk ./b18n-combined-cgi.hs 289 +jsCode = unlines + [ "function saveScroll () {" + , " $(\"#scrolly\").val($(\"html\").scrollTop());" + , "}" + , "function restoreScroll () {" + , " $(\"html\").scrollTop($(\"#scrolly\").val());" + , "}" + ]