Mercurial > urweb
comparison lib/js/urweb.js @ 2121:f89be9cd2087
Support 'dynClass' and 'dynStyle' for <body>
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Tue, 03 Mar 2015 15:55:00 -0500 |
parents | 9e9c915f554c |
children | 248e2b32954b |
comparison
equal
deleted
inserted
replaced
2120:e3a79066380d | 2121:f89be9cd2087 |
---|---|
1198 if (s_class) { | 1198 if (s_class) { |
1199 var x = document.createElement("script"); | 1199 var x = document.createElement("script"); |
1200 x.dead = false; | 1200 x.dead = false; |
1201 x.signal = s_class; | 1201 x.signal = s_class; |
1202 x.sources = null; | 1202 x.sources = null; |
1203 x.closures = htmlCls; | 1203 x.closures = null; |
1204 | 1204 |
1205 x.recreate = function(v) { | 1205 x.recreate = function(v) { |
1206 for (var ls = x.closures; ls != htmlCls; ls = ls.next) | 1206 for (var ls = x.closures; ls != htmlCls; ls = ls.next) |
1207 freeClosure(ls.data); | 1207 freeClosure(ls.data); |
1208 | 1208 |
1231 html.style.cssText = flatten(cls, v); | 1231 html.style.cssText = flatten(cls, v); |
1232 y.closures = concat(cls.v, htmlCls2); | 1232 y.closures = concat(cls.v, htmlCls2); |
1233 } | 1233 } |
1234 | 1234 |
1235 html.appendChild(y); | 1235 html.appendChild(y); |
1236 populate(y); | |
1237 } | |
1238 } | |
1239 | |
1240 function bodyDynClass(s_class, s_style) { | |
1241 if (suspendScripts) | |
1242 return; | |
1243 | |
1244 var htmlCls = null; | |
1245 | |
1246 if (s_class) { | |
1247 var x = document.createElement("script"); | |
1248 x.dead = false; | |
1249 x.signal = s_class; | |
1250 x.sources = null; | |
1251 x.closures = htmlCls; | |
1252 | |
1253 x.recreate = function(v) { | |
1254 for (var ls = x.closures; ls != htmlCls; ls = ls.next) | |
1255 freeClosure(ls.data); | |
1256 | |
1257 var cls = {v : null}; | |
1258 document.body.className = flatten(cls, v); | |
1259 console.log("className to + " + document.body.className); | |
1260 x.closures = concat(cls.v, htmlCls); | |
1261 } | |
1262 | |
1263 document.body.appendChild(x); | |
1264 populate(x); | |
1265 } | |
1266 | |
1267 if (s_style) { | |
1268 var htmlCls2 = s_class ? null : htmlCls; | |
1269 var y = document.createElement("script"); | |
1270 y.dead = false; | |
1271 y.signal = s_style; | |
1272 y.sources = null; | |
1273 y.closures = htmlCls2; | |
1274 | |
1275 y.recreate = function(v) { | |
1276 for (var ls = y.closures; ls != htmlCls2; ls = ls.next) | |
1277 freeClosure(ls.data); | |
1278 | |
1279 var cls = {v : null}; | |
1280 document.body.style.cssText = flatten(cls, v); | |
1281 console.log("style to + " + document.body.style.cssText); | |
1282 y.closures = concat(cls.v, htmlCls2); | |
1283 } | |
1284 | |
1285 document.body.appendChild(y); | |
1236 populate(y); | 1286 populate(y); |
1237 } | 1287 } |
1238 } | 1288 } |
1239 | 1289 |
1240 function addOnChange(x, f) { | 1290 function addOnChange(x, f) { |