📄 ajs.js
字号:
var i=0, attr; var elm = document.createElement(name); var first_attr = attrs[0]; if(AJS.isDict(attrs[i])) { for(k in first_attr) { attr = first_attr[k]; if(k == 'style' || k == 's') elm.style.cssText = attr; else if(k == 'c' || k == 'class' || k == 'className') elm.className = attr; else { elm.setAttribute(k, attr); } } i++; } if(first_attr == null) i = 1; for(var j=i; j < attrs.length; j++) { var attr = attrs[j]; if(attr) { var type = typeof(attr); if(type == 'string' || type == 'number') attr = AJS.TN(attr); elm.appendChild(attr); } } return elm; }, _createDomShortcuts: function() { var elms = [ "ul", "li", "td", "tr", "th", "tbody", "table", "input", "span", "b", "a", "div", "img", "button", "h1", "h2", "h3", "h4", "h5", "h6", "br", "textarea", "form", "p", "select", "option", "optgroup", "iframe", "script", "center", "dl", "dt", "dd", "small", "pre", 'i' ]; var extends_ajs = function(elm) { AJS[elm.toUpperCase()] = function() { return AJS.createDOM.apply(null, [elm, arguments]); }; } AJS.map(elms, extends_ajs); AJS.TN = function(text) { return document.createTextNode(text) }; }, setHTML: function(elm, html) { elm.innerHTML = html; return elm; },//--- CSS related ---------------------------------------------- showElement: function(/*elms...*/) { var args = AJS.forceArray(arguments); AJS.map(args, function(elm) { elm.style.display = ''}); }, hideElement: function(elm) { var args = AJS.forceArray(arguments); AJS.map(args, function(elm) { elm.style.display = 'none'}); }, isElementHidden: function(elm) { return ((elm.style.display == "none") || (elm.style.visibility == "hidden")); }, getCssDim: function(dim) { if(AJS.isString(dim)) return dim; else return dim + "px"; }, getCssProperty: function(elm, prop) { elm = AJS.$(elm); var y; if(elm.currentStyle) y = elm.currentStyle[prop]; else if (window.getComputedStyle) y = document.defaultView.getComputedStyle(elm,null).getPropertyValue(prop); return y; }, setStyle: function(/*elm1, elm2..., property, new_value*/) { var args = AJS.forceArray(arguments); var new_val = args.pop(); var property = args.pop(); AJS.map(args, function(elm) { elm.style[property] = AJS.getCssDim(new_val); }); }, setWidth: function(/*elm1, elm2..., width*/) { var args = AJS.forceArray(arguments); args.splice(args.length-1, 0, 'width'); AJS.setStyle.apply(null, args); }, setHeight: function(/*elm1, elm2..., height*/) { var args = AJS.forceArray(arguments); args.splice(args.length-1, 0, 'height'); AJS.setStyle.apply(null, args); }, setLeft: function(/*elm1, elm2..., left*/) { var args = AJS.forceArray(arguments); args.splice(args.length-1, 0, 'left'); AJS.setStyle.apply(null, args); }, setTop: function(/*elm1, elm2..., top*/) { var args = AJS.forceArray(arguments); args.splice(args.length-1, 0, 'top'); AJS.setStyle.apply(null, args); }, setClass: function(/*elm1, elm2..., className*/) { var args = AJS.forceArray(arguments); var c = args.pop(); AJS.map(args, function(elm) { elm.className = c}); }, addClass: function(/*elm1, elm2..., className*/) { var args = AJS.forceArray(arguments); var cls = args.pop(); var add_class = function(o) { if(!new RegExp("(^|\\s)" + cls + "(\\s|$)").test(o.className)) o.className += (o.className ? " " : "") + cls; }; AJS.map(args, function(elm) { add_class(elm); }); }, hasClass: function(elm, cls) { if(!elm.className) return false; return elm.className == cls || elm.className.search(new RegExp(" " + cls + "|^" + cls)) != -1 }, removeClass: function(/*elm1, elm2..., className*/) { var args = AJS.forceArray(arguments); var cls = args.pop(); var rm_class = function(o) { o.className = o.className.replace(new RegExp("\\s?" + cls, 'g'), ""); }; AJS.map(args, function(elm) { rm_class(elm); }); }, setOpacity: function(elm, p) { elm.style.opacity = p; elm.style.filter = "alpha(opacity="+ p*100 +")"; }, resetOpacity: function(elm) { elm.style.opacity = 1; elm.style.filter = ""; },//--- Misc ---------------------------------------------- RND: function(tmpl, ns, scope) { scope = scope || window; var fn = function(w, g) { g = g.split("|"); var cnt = ns[g[0]]; for(var i=1; i < g.length; i++) cnt = scope[g[i]](cnt); if(cnt == '') return ''; if(cnt == 0 || cnt == -1) cnt += ''; return cnt || w; }; return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn); }, HTML2DOM: function(html,/*optional*/ first_child) { var d = AJS.DIV(); d.innerHTML = html; if(first_child) return d.childNodes[0]; else return d; }, preloadImages: function(/*img_src1, ..., img_srcN*/) { AJS.AEV(window, 'load', AJS.$p(function(args) { AJS.map(args, function(src) { var pic = new Image(); pic.src = src; }); }, arguments)); },////// Ajax functions//// getXMLHttpRequest: function() { var try_these = [ function () { return new XMLHttpRequest(); }, function () { return new ActiveXObject('Msxml2.XMLHTTP'); }, function () { return new ActiveXObject('Microsoft.XMLHTTP'); }, function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); }, function () { throw "Browser does not support XMLHttpRequest"; } ]; for (var i = 0; i < try_these.length; i++) { var func = try_these[i]; try { return func(); } catch (e) { } } }, getRequest: function(url, data, type) { if(!type) type = "POST"; var req = AJS.getXMLHttpRequest(); if(url.match(/^https?:\/\//) == null) { if(AJS.BASE_URL != '') { if(AJS.BASE_URL.lastIndexOf('/') != AJS.BASE_URL.length-1) AJS.BASE_URL += '/'; url = AJS.BASE_URL + url; } } req.open(type, url, true); if(type == "POST") req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); return AJS._sendXMLHttpRequest(req); }, _sendXMLHttpRequest: function(req, data) { var d = new AJSDeferred(req); var onreadystatechange = function () { if (req.readyState == 4) { var status = ''; try { status = req.status; } catch(e) {}; if(status == 200 || status == 304 || req.responseText == null) { d.callback(); } else { if(d.errbacks.length == 0) { if(AJS.ajaxErrorHandler) AJS.ajaxErrorHandler(req.responseText, req); } else d.errback(); } } } req.onreadystatechange = onreadystatechange; return d; }, _reprString: function(o) { return ('"' + o.replace(/(["\\])/g, '\\$1') + '"' ).replace(/[\f]/g, "\\f" ).replace(/[\b]/g, "\\b" ).replace(/[\n]/g, "\\n" ).replace(/[\t]/g, "\\t" ).replace(/[\r]/g, "\\r"); }, _reprDate: function(db) { var year = db.getFullYear(); var dd = db.getDate(); var mm = db.getMonth()+1; var hh = db.getHours(); var mins = db.getMinutes(); function leadingZero(nr) { if (nr < 10) nr = "0" + nr; return nr; } if(hh == 24) hh = '00'; var time = leadingZero(hh) + ':' + leadingZero(mins); return '"' + year + '-' + mm + '-' + dd + 'T' + time + '"'; }, serializeJSON: function(o) { var objtype = typeof(o); if (objtype == "undefined") { return "undefined"; } else if (objtype == "number" || objtype == "boolean") { return o + ""; } else if (o === null) { return "null"; } if (objtype == "string") { return AJS._reprString(o); } if(objtype == 'object' && o.getFullYear) { return AJS._reprDate(o); } var me = arguments.callee; if (objtype != "function" && typeof(o.length) == "number") { var res = []; for (var i = 0; i < o.length; i++) { var val = me(o[i]); if (typeof(val) != "string") { val = "undefined"; } res.push(val); } return "[" + res.join(",") + "]"; } // it's a function with no adapter, bad if (objtype == "function") return null; res = []; for (var k in o) { var useKey; if (typeof(k) == "number") { useKey = '"' + k + '"'; } else if (typeof(k) == "string") { useKey = AJS._reprString(k); } else { // skip non-string or number keys continue; } val = me(o[k]); if (typeof(val) != "string") { // skip non-serializable values continue; } res.push(useKey + ":" + val); } return "{" + res.join(",") + "}"; }, loadJSONDoc: function(url) { var d = AJS.getRequest(url); var eval_req = function(data, req) { var text = req.responseText; if(text == "Error") d.errback(req); else return AJS.evalTxt(text); }; d.addCallback(eval_req); return d; }, evalTxt: function(txt) { try { return eval('('+ txt + ')'); } catch(e) { return eval(txt); } }, evalScriptTags: function(html) { var script_data = html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g); if(script_data != null) { for(var i=0; i < script_data.length; i++) { var script_only = script_data[i].replace(/<script.*?>/g, ""); script_only = script_only.replace(/<\/script>/g, ""); eval(script_only); } } }, queryArguments: function(data) { var post_data = []; for(k in data) post_data.push(k + "=" + AJS.urlencode(data[k])); return post_data.join("&"); },////// Position and size//// getMousePos: function(e) { var posx = 0; var posy = 0; if (!e) var e = window.event; if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY; } else if (e.clientX || e.clientY) { posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; } return {x: posx, y: posy}; }, getScrollTop: function() { //From: http://www.quirksmode.org/js/doctypes.html var t; if (document.documentElement && document.documentElement.scrollTop) t = document.documentElement.scrollTop; else if (document.body) t = document.body.scrollTop; return t; }, //Shortcut: AJS.$AP absolutePosition: function(elm) { var posObj = {'x': elm.offsetLeft, 'y': elm.offsetTop}; if(elm.offsetParent) { var next = elm.offsetParent; while(next) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -