Mercurial > repos > tabletprog
view mquery.js @ 69:ba032565c7a5
Fix handling of variable style access to self and parent object messages defined with lambdas. Improve test case for this bug to include parent object access as well as self object access.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 19:24:04 -0700 |
parents | 668f533e5284 |
children | 76a21129e8f5 |
line wrap: on
line source
function each(container, fun) { if (container instanceof Array) { for (var i = 0; i < container.length; i++) { fun(i, container[i]); } } else { for (var i in container) { if (container.hasOwnProperty(i)) { fun(i, container[i]); } } } } function q(query, el) { return el === undefined ? document.querySelector(query) : el.querySelector(query); } function qall(query, el) { return el === undefined ? document.querySelectorAll(query) : el.querySelectorAll(query); } function hide(el) { el.style.display = 'none'; } function show(el, dtype) { if (dtype === undefined) { dtype = 'block'; } el.style.display = dtype; } function onReady(fun) { if (document.readyState == 'complete') { fun(); } else { document.onreadystatechange = function() { if (document.readyState == 'complete') { fun(); document.onreadystatechange = null; } } } } function addClass(el, classname) { var classes = el.className.split(' '); if (classes.indexOf(classname) == -1) { classes.push(classname); el.className = classes.join(' '); } } function removeClass(el, classname) { var classes = el.className.split(' '); var idx = classes.indexOf(classname); if (idx > -1) { classes.splice(idx, 1); el.className = classes.join(' '); } } function ajax(method, url, data, onSuccess, onFail, onOthers) { var req; try { req = new XMLHttpRequest(); } catch (e) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.onreadystatechange = function() { if (req.readyState == 4) { if ((req.status >= 200 && req.status <= 299) || req.status == 0) { onSuccess(req); } else if(onFail) { onFail(req); } else { console.log('request failed:', req); } } else if(onOthers) { onOthers(req); } } req.open(method, url); if (data && 'mime' in data) { req.setRequestHeader('Content-Type', data.mime); req.send(data); } else { req.send(data); } } function get(url, onSuccess, onFail, onOthers) { ajax('GET', url, undefined, onSuccess, onFail, onOthers); } function post(url, data, onSuccess, onFail, onOthers) { ajax('POST', url, data, onSuccess, onFail, onOthers); } function newEl(tagname, props) { var el = document.createElement(tagname); if (typeof props == 'object') { each(props, function (key, val) { el[key] = val; }); } return el; } function setText(parent, text) { parent.innerHTML = ''; parent.appendChild(document.createTextNode(text)); return parent; }