summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-11-22 15:30:15 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-11-22 15:30:15 -0500
commit1da43b401a4ebcd11ea4bd568326ec70fa1cc3b9 (patch)
treecebfef1afa9861c1cc5fb5263cc438406e0f28a0 /lib
parentba9cbd82cbd87250308519ae0d9570959d53d75b (diff)
grid0 working in IE
Diffstat (limited to 'lib')
-rw-r--r--lib/js/urweb.js42
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) };