diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-11-22 15:30:15 -0500 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-11-22 15:30:15 -0500 |
commit | 1da43b401a4ebcd11ea4bd568326ec70fa1cc3b9 (patch) | |
tree | cebfef1afa9861c1cc5fb5263cc438406e0f28a0 /lib | |
parent | ba9cbd82cbd87250308519ae0d9570959d53d75b (diff) |
grid0 working in IE
Diffstat (limited to 'lib')
-rw-r--r-- | lib/js/urweb.js | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js index 71a1a53d..15ff7bf2 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -116,7 +116,7 @@ function onFail(f) { function doExn(v) { if (v == null || v.uw_error == null) { - var s = (v == null ? "null" : v.toString()); + var s = (v == null ? "null" : v.message ? v.message : v.toString()); if (v != null && v.fileName && v.lineNumber) s += " (" + v.fileName + ":" + v.lineNumber + ")"; runHandlers("Fail", failHandlers, s); @@ -289,7 +289,9 @@ function lastParent() { while (pos.lastChild && pos.lastChild.nodeType == 1) pos = pos.lastChild; - return pos.parentNode; + pos = pos.parentNode; + + return pos; } function parent() { @@ -315,6 +317,7 @@ function runScripts(node) { scriptsCopy[i] = scripts[i]; for (var i = 0; i < len; ++i) { thisScript = scriptsCopy[i]; + try { eval(thisScript.text); } catch (v) { @@ -355,6 +358,7 @@ function dyn(pnode, s) { var next; for (var child = firstChild; child && child != x; child = next) { next = child.nextSibling; + killScript(child); if (child.getElementsByTagName) { var arr = child.getElementsByTagName("script"); @@ -367,7 +371,9 @@ function dyn(pnode, s) { } var cls = {v : null}; - var html = dynPrefix + flatten(cls, v); + var html = flatten(cls, v); + if (pnode != "table" && pnode != "tr") + html = dynPrefix + html; x.closures = cls.v; if (pnode == "table") { @@ -377,12 +383,22 @@ function dyn(pnode, s) { var table = x.parentNode; if (table) { - var arr = dummy.getElementsByTagName("tbody"); firstChild = null; var tbody; - if (arr.length > 0 && table != null) + + var arr = dummy.getElementsByTagName("tbody"); + + var tbody; + if (arr.length > 0 && arr[0].parentNode == dummy.firstChild) { tbody = arr[0]; - else + var next; + for (var node = dummy.firstChild.firstChild; node; node = next) { + next = node.nextSibling; + + if (node.tagName != "TBODY") + tbody.appendChild(node); + } + } else tbody = dummy.firstChild; var next; @@ -402,16 +418,16 @@ function dyn(pnode, s) { if (table) { var arr = dummy.getElementsByTagName("tr"); firstChild = null; - var tbody; + var tr; if (arr.length > 0 && table != null) - tbody = arr[0]; + tr = arr[0]; else - tbody = dummy.firstChild; + tr = dummy.firstChild; var next; firstChild = document.createElement("script"); table.insertBefore(firstChild, x); - for (var node = tbody.firstChild; node; node = next) { + for (var node = tr.firstChild; node; node = next) { next = node.nextSibling; table.insertBefore(node, x); } @@ -429,8 +445,9 @@ function dyn(pnode, s) { populate(x); } -function input(t, s, recreate) { +function input(t, s, recreate, type) { var x = document.createElement(t); + if (type) x.type = type; x.dead = false; x.signal = ss(s); x.sources = null; @@ -461,8 +478,7 @@ function sel(s, content) { } function chk(s) { - var x = input("input", s, function(x) { return function(v) { if (x.checked != v) x.checked = v; }; }); - x.type = "checkbox"; + var x = input("input", s, function(x) { return function(v) { if (x.checked != v) x.checked = v; }; }, "checkbox"); x.checked = s.data; x.onchange = function() { sv(s, x.checked) }; |