prototype.js
来自「AJAX开发工具包」· JavaScript 代码 · 共 223 行
JS
223 行
// JavaScript prototype extensions
Object.extend = function(dest, source) {
for(prop in source) {
dest[prop] = source[prop];
}
return dest;
}
Object.extend(Function.prototype, {
getArguments: function() {
var args = [];
for(var i=0; i<this.arguments.length; i++)
args.push(this.arguments[i]);
return args;
},
bind: function(o) {
if(!window.__objs) {
window.__objs = [];
window.__funcs = [];
}
var objId = o.__oid;
if(!objId)
__objs[objId = o.__oid = __objs.length] = o;
var me = this;
var funcId = me.__fid;
if(!funcId)
__funcs[funcId = me.__fid = __funcs.length] = me;
if(!o.__closures)
o.__closures = [];
var closure = o.__closures[funcId];
if(closure)
return closure;
o = null;
me = null;
return __objs[objId].__closures[funcId] = function() {
return __funcs[funcId].apply(__objs[objId], arguments);
};
},
bindAsEventListener: function(o) {
if(!window.__objs) {
window.__objs = [];
window.__funcs = [];
}
var objId = o.__oid;
if(!objId)
__objs[objId = o.__oid = __objs.length] = o;
var me = this;
var funcId = me.__fid;
if(!funcId)
__funcs[funcId = me.__fid = __funcs.length] = me;
if(!o.__closures)
o.__closures = [];
var closure = o.__closures[funcId];
if(closure)
return closure;
o = null;
me = null;
return __objs[objId].__closures[funcId] = function(event) {
return __funcs[funcId].call(__objs[objId], event || window.event);
};
},
bindToEvent: function(ele, evt, obj, useCapture) {
if(useCapture == "undefined") useCapture = false;
if(ele.attachEvent) {
ele.attachEvent("on" + evt, this.bindAsEventListener(obj));
}else if(ele.addEventListener) {
ele.addEventListener(evt, this.bindAsEventListener(obj), useCapture);
}
},
removeFromEvent: function(ele, evt, obj, useCapture) {
if(useCapture == "undefined") useCapture = false;
if(ele.detachEvent) {
ele.detachEvent("on" + evt, this.bindAsEventListener(obj));
}else if(ele.removeEventListener) {
ele.removeEventListener(evt, this.bindAsEventListener(obj), useCapture);
}
}
}, false);
Object.extend(String.prototype, {
endsWith: function(s) {
return (this.substr(this.length - s.length) == s);
},
startsWith: function(s) {
return (this.substr(0, s.length) == s);
},
trimLeft: function() {
return this.replace(/^\s*/,"");
},
trimRight: function() {
return this.replace(/\s*$/,"");
},
trim: function() {
return this.trimRight().trimLeft();
}
}, false);
String.format = function(s){
for(var i=1; i<arguments.length; i++){
s = s.replace("{" + (i -1) + "}", arguments[i]);
}
return s;
}
Object.extend(Array.prototype, {
push: function(o) {
this[this.length] = o;
}
}, false);
// JavaScript namespaces
if(!window.addNamespace) {
window.addNamespace = function(ns) {
var nsParts = ns.split(".");
var root = window;
for(var i=0; i<nsParts.length; i++) {
if(typeof root[nsParts[i]] == "undefined")
root[nsParts[i]] = {};
root = root[nsParts[i]];
}
}
}
// Browser related properties
addNamespace("MS.Browser");
MS.Browser.isIE = (window.navigator.appName.toLowerCase().indexOf('explorer') != -1 || window.navigator.appName.toLowerCase().indexOf('msie') != -1 );
// Debugging
addNamespace("MS.Debug");
MS.Debug.enabled = false;
MS.Debug.trace = function(s){}
var Class = {
create: function() {
return function() {
if(typeof this.initialize == "function")
this.initialize.apply(this, arguments);
}
}
}
addNamespace("MS.Position");
MS.Position = {
getLocation: function(ele) {
var offsetX = 0;
var offsetY = 0;
var parent;
for(parent=ele; parent; parent=parent.offsetParent) {
if(parent.offsetLeft)
offsetX += parent.offsetLeft;
if(parent.offsetTop)
offsetY += parent.offsetTop;
}
return {left:offsetX,top:offsetY};
},
getBounds: function(ele) {
var offset = MS.Position.getLocation(ele);
var width = ele.offsetWidth;
var height = ele.offsetHeight;
return {left:offset.left, top:offset.top, width:width, height:height};
}
};
function addEvent(o, evType, f, capture) {
if(o.addEventListener) {
o.addEventListener(evType, f, capture);
return true;
} else if (o.attachEvent) {
var r = o.attachEvent("on" + evType, f);
return r;
} else {
// alert("Handler could not be attached");
}
}
function removeEvent(o, evType, f, capture) {
if(o.removeEventListener) {
o.removeEventListener(evType, f, capture);
return true;
} else if (o.detachEvent) {
o.detachEvent("on" + evType, f);
} else {
// alert("Handler could not be removed");
}
}
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?