Mercurial > urweb
changeset 1790:56b8efff64e7
Nicer <active> semantics
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 22 Jul 2012 09:42:17 -0400 |
parents | 2e01a36701eb |
children | 2f8b8952fe27 |
files | lib/js/urweb.js tests/activeFocus.ur |
diffstat | 2 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/js/urweb.js Sat Jul 21 21:07:15 2012 -0400 +++ b/lib/js/urweb.js Sun Jul 22 09:42:17 2012 -0400 @@ -803,7 +803,6 @@ var dummy = document.createElement("body"); dummy.innerHTML = "<table>" + html + "</table>"; - runScripts(dummy); var table = x.parentNode; if (table) { @@ -831,12 +830,12 @@ for (var node = tbody.firstChild; node; node = next) { next = node.nextSibling; table.insertBefore(node, x); + runScripts(node); } } } else if (pnode == "tr") { var dummy = document.createElement("body"); dummy.innerHTML = "<table><tr>" + html + "</tr></table>"; - runScripts(dummy); var table = x.parentNode; if (table) { @@ -854,14 +853,15 @@ for (var node = tr.firstChild; node; node = next) { next = node.nextSibling; table.insertBefore(node, x); + runScripts(node); } } } else { firstChild = document.createElement("span"); firstChild.innerHTML = html; - runScripts(firstChild); if (x.parentNode) x.parentNode.insertBefore(firstChild, x); + runScripts(firstChild); } };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/activeFocus.ur Sun Jul 22 09:42:17 2012 -0400 @@ -0,0 +1,18 @@ +fun main () : transaction page = + i <- fresh; + return <xml><body> + <ctextbox/> + <ctextbox id={i}/> + <active code={giveFocus i; return <xml>Done</xml>}/> + </body></xml> + +fun dynamic () : transaction page = + x <- source <xml/>; + return <xml><body> + <dyn signal={signal x}/> + <button onclick={fn _ => i <- fresh; set x <xml> + <ctextbox/> + <ctextbox id={i}/> + <active code={giveFocus i; return <xml>Done</xml>}/> + </xml>}/> + </body></xml>