📄 ajs.js
字号:
/*Last Modified: 29/08/07 18:28:12AJS JavaScript library A very small library with a lot of functionalityAUTHOR 4mir Salihefendic (http://amix.dk) - amix@amix.dkLICENSE Copyright (c) 2006 amix. All rights reserved. Copyright (c) 2005 Bob Ippolito. All rights reserved. http://www.opensource.org/licenses/mit-license.phpVERSION 4.1SITE http://orangoo.com/AmiNation/AJS**/if(!AJS) {var AJS = { BASE_URL: "", ajaxErrorHandler: null,////// General accessor functions//// getQueryArgument: function(var_name) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if (pair[0] == var_name) { return pair[1]; } } return null; }, isIe: function() { return (navigator.userAgent.toLowerCase().indexOf("msie") != -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1); }, isNetscape7: function() { return (navigator.userAgent.toLowerCase().indexOf("netscape") != -1 && navigator.userAgent.toLowerCase().indexOf("7.") != -1); }, isSafari: function() { return (navigator.userAgent.toLowerCase().indexOf("khtml") != -1); }, isOpera: function() { return (navigator.userAgent.toLowerCase().indexOf("opera") != -1); }, isMozilla: function() { return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210); }, isMac: function() { return (navigator.userAgent.toLowerCase().indexOf('macintosh') != -1); }, isCamino: function() { return (navigator.userAgent.toLowerCase().indexOf("camino") != -1); },////// Array functions//// //Shortcut: AJS.$A createArray: function(v) { if(AJS.isArray(v) && !AJS.isString(v)) return v; else if(!v) return []; else return [v]; }, forceArray: function(args) { var r = []; AJS.map(args, function(elm) { r.push(elm); }); return r; }, join: function(delim, list) { try { return list.join(delim); } catch(e) { var r = list[0] || ''; AJS.map(list, function(elm) { r += delim + elm; }, 1); return r + ''; } }, isIn: function(elm, list) { var i = AJS.getIndex(elm, list); if(i != -1) return true; else return false; }, getIndex: function(elm, list/*optional*/, eval_fn) { for(var i=0; i < list.length; i++) if(eval_fn && eval_fn(list[i]) || elm == list[i]) return i; return -1; }, getFirst: function(list) { if(list.length > 0) return list[0]; else return null; }, getLast: function(list) { if(list.length > 0) return list[list.length-1]; else return null; }, update: function(l1, l2) { for(var i in l2) l1[i] = l2[i]; return l1; }, flattenList: function(list) { var r = []; var _flatten = function(r, l) { AJS.map(l, function(o) { if(o == null) {} else if (AJS.isArray(o)) _flatten(r, o); else r.push(o); }); } _flatten(r, list); return r; },////// Functional programming//// map: function(list, fn,/*optional*/ start_index, end_index) { var i = 0, l = list.length; if(start_index) i = start_index; if(end_index) l = end_index; for(i; i < l; i++) { var val = fn(list[i], i); if(val != undefined) return val; } }, rmap: function(list, fn) { var i = list.length-1, l = 0; for(i; i >= l; i--) { var val = fn.apply(null, [list[i], i]); if(val != undefined) return val; } }, filter: function(list, fn, /*optional*/ start_index, end_index) { var r = []; AJS.map(list, function(elm) { if(fn(elm)) r.push(elm); }, start_index, end_index); return r; }, partial: function(fn) { var args = AJS.$FA(arguments); args.shift(); return function() { args = args.concat(AJS.$FA(arguments)); return fn.apply(window, args); } },////// DOM functions//////--- Accessors ---------------------------------------------- //Shortcut: AJS.$ getElement: function(id) { if(AJS.isString(id) || AJS.isNumber(id)) return document.getElementById(id); else return id; }, //Shortcut: AJS.$$ getElements: function(/*id1, id2, id3*/) { var args = AJS.forceArray(arguments); var elements = new Array(); for (var i = 0; i < args.length; i++) { var element = AJS.getElement(args[i]); elements.push(element); } return elements; }, //Shortcut: AJS.$bytc getElementsByTagAndClassName: function(tag_name, class_name, /*optional*/ parent, first_match) { var class_elements = []; if(!AJS.isDefined(parent)) parent = document; if(!AJS.isDefined(tag_name)) tag_name = '*'; var els = parent.getElementsByTagName(tag_name); var els_len = els.length; var pattern = new RegExp("(^|\\s)" + class_name + "(\\s|$)"); for (i = 0, j = 0; i < els_len; i++) { if ( pattern.test(els[i].className) || class_name == null ) { class_elements[j] = els[i]; j++; } } if(first_match) return class_elements[0]; else return class_elements; }, nodeName: function(elm) { return elm.nodeName.toLowerCase(); }, _nodeWalk: function(elm, tag_name, class_name, fn_next_elm) { var p = fn_next_elm(elm); var checkFn; if(tag_name && class_name) { checkFn = function(p) { return AJS.nodeName(p) == tag_name && AJS.hasClass(p, class_name); } } else if(tag_name) { checkFn = function(p) { return AJS.nodeName(p) == tag_name; } } else { checkFn = function(p) { return AJS.hasClass(p, class_name); } } while(p) { if(checkFn(p)) return p; p = fn_next_elm(p); } return null; }, getParentBytc: function(elm, tag_name, class_name) { return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.parentNode; }); }, hasParent: function(elm, parent_to_consider, max_look_up) { if(elm == parent_to_consider) return true; if(max_look_up == 0) return false; return AJS.hasParent(elm.parentNode, parent_to_consider, max_look_up-1); }, getPreviousSiblingBytc: function(elm, tag_name, class_name) { return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.previousSibling; }); }, getNextSiblingBytc: function(elm, tag_name, class_name) { return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.nextSibling; }); }, getBody: function() { return AJS.$bytc('body')[0] },//--- Form related ---------------------------------------------- //Shortcut: AJS.$f getFormElement: function(form, name) { form = AJS.$(form); var r = null; AJS.map(form.elements, function(elm) { if(elm.name && elm.name == name) r = elm; }); if(r) return r; AJS.map(AJS.$bytc('select', null, form), function(elm) { if(elm.name && elm.name == name) r = elm; }); return r; }, formContents: function(form) { var form = AJS.$(form); var r = {}; var fn = function(elms) { AJS.map(elms, function(e) { if(e.name) r[e.name] = e.value || ''; }); } fn(AJS.$bytc('input', null, form)); fn(AJS.$bytc('textarea', null, form)); return r; }, getSelectValue: function(select) { var select = AJS.$(select); return select.options[select.selectedIndex].value; },//--- DOM related ---------------------------------------------- //Shortcut: AJS.DI documentInsert: function(elm) { if(typeof(elm) == 'string') elm = AJS.HTML2DOM(elm); document.write('<span id="dummy_holder"></span>'); AJS.swapDOM(AJS.$('dummy_holder'), elm); }, cloner: function(element) { return function() { return element.cloneNode(true); } }, //Shortcut: AJS.ACN appendChildNodes: function(elm/*, elms...*/) { if(arguments.length >= 2) { AJS.map(arguments, function(n) { if(AJS.isString(n)) n = AJS.TN(n); if(AJS.isDefined(n)) elm.appendChild(n); }, 1); } return elm; }, appendToTop: function(elm/*, elms...*/) { var args = AJS.forceArray(arguments).slice(1); if(args.length >= 1) { var first_child = elm.firstChild; if(first_child) { while(true) { var t_elm = args.shift(); if(t_elm) AJS.insertBefore(t_elm, first_child); else break; } } else { AJS.ACN.apply(null, arguments); } } return elm; }, //Shortcut: AJS.RCN replaceChildNodes: function(elm/*, elms...*/) { var child; while ((child = elm.firstChild)) elm.removeChild(child); if (arguments.length < 2) return elm; else return AJS.appendChildNodes.apply(null, arguments); return elm; }, insertAfter: function(elm, reference_elm) { reference_elm.parentNode.insertBefore(elm, reference_elm.nextSibling); return elm; }, insertBefore: function(elm, reference_elm) { reference_elm.parentNode.insertBefore(elm, reference_elm); return elm; }, swapDOM: function(dest, src) { dest = AJS.getElement(dest); var parent = dest.parentNode; if (src) { src = AJS.getElement(src); parent.replaceChild(src, dest); } else { parent.removeChild(dest); } return src; }, removeElement: function(/*elm1, elm2...*/) { var args = AJS.forceArray(arguments); AJS.map(args, function(elm) { AJS.swapDOM(elm, null); }); }, createDOM: function(name, attrs) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -