⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.js

📁 初学者
💻 JS
📖 第 1 页 / 共 2 页
字号:
};dojo.event.MethodInvocation = function (join_point, obj, args) {	this.jp_ = join_point;	this.object = obj;	this.args = [];	for (var x = 0; x < args.length; x++) {		this.args[x] = args[x];	}	this.around_index = -1;};dojo.event.MethodInvocation.prototype.proceed = function () {	this.around_index++;	if (this.around_index >= this.jp_.around.length) {		return this.jp_.object[this.jp_.methodname].apply(this.jp_.object, this.args);	} else {		var ti = this.jp_.around[this.around_index];		var mobj = ti[0] || dj_global;		var meth = ti[1];		return mobj[meth].call(mobj, this);	}};dojo.event.MethodJoinPoint = function (obj, funcName) {	this.object = obj || dj_global;	this.methodname = funcName;	this.methodfunc = this.object[funcName];	this.squelch = false;};dojo.event.MethodJoinPoint.getForMethod = function (obj, funcName) {	if (!obj) {		obj = dj_global;	}	var ofn = obj[funcName];	if (!ofn) {		ofn = obj[funcName] = function () {		};		if (!obj[funcName]) {			dojo.raise("Cannot set do-nothing method on that object " + funcName);		}	} else {		if ((typeof ofn != "function") && (!dojo.lang.isFunction(ofn)) && (!dojo.lang.isAlien(ofn))) {			return null;		}	}	var jpname = funcName + "$joinpoint";	var jpfuncname = funcName + "$joinpoint$method";	var joinpoint = obj[jpname];	if (!joinpoint) {		var isNode = false;		if (dojo.event["browser"]) {			if ((obj["attachEvent"]) || (obj["nodeType"]) || (obj["addEventListener"])) {				isNode = true;				dojo.event.browser.addClobberNodeAttrs(obj, [jpname, jpfuncname, funcName]);			}		}		var origArity = ofn.length;		obj[jpfuncname] = ofn;		joinpoint = obj[jpname] = new dojo.event.MethodJoinPoint(obj, jpfuncname);		if (!isNode) {			obj[funcName] = function () {				return joinpoint.run.apply(joinpoint, arguments);			};		} else {			obj[funcName] = function () {				var args = [];				if (!arguments.length) {					var evt = null;					try {						if (obj.ownerDocument) {							evt = obj.ownerDocument.parentWindow.event;						} else {							if (obj.documentElement) {								evt = obj.documentElement.ownerDocument.parentWindow.event;							} else {								if (obj.event) {									evt = obj.event;								} else {									evt = window.event;								}							}						}					}					catch (e) {						evt = window.event;					}					if (evt) {						args.push(dojo.event.browser.fixEvent(evt, this));					}				} else {					for (var x = 0; x < arguments.length; x++) {						if ((x == 0) && (dojo.event.browser.isEvent(arguments[x]))) {							args.push(dojo.event.browser.fixEvent(arguments[x], this));						} else {							args.push(arguments[x]);						}					}				}				return joinpoint.run.apply(joinpoint, args);			};		}		obj[funcName].__preJoinArity = origArity;	}	return joinpoint;};dojo.lang.extend(dojo.event.MethodJoinPoint, {squelch:false, unintercept:function () {	this.object[this.methodname] = this.methodfunc;	this.before = [];	this.after = [];	this.around = [];}, disconnect:dojo.lang.forward("unintercept"), run:function () {	var obj = this.object || dj_global;	var args = arguments;	var aargs = [];	for (var x = 0; x < args.length; x++) {		aargs[x] = args[x];	}	var unrollAdvice = function (marr) {		if (!marr) {			dojo.debug("Null argument to unrollAdvice()");			return;		}		var callObj = marr[0] || dj_global;		var callFunc = marr[1];		if (!callObj[callFunc]) {			dojo.raise("function \"" + callFunc + "\" does not exist on \"" + callObj + "\"");		}		var aroundObj = marr[2] || dj_global;		var aroundFunc = marr[3];		var msg = marr[6];		var maxCount = marr[7];		if (maxCount > -1) {			if (maxCount == 0) {				return;			}			marr[7]--;		}		var undef;		var to = {args:[], jp_:this, object:obj, proceed:function () {			return callObj[callFunc].apply(callObj, to.args);		}};		to.args = aargs;		var delay = parseInt(marr[4]);		var hasDelay = ((!isNaN(delay)) && (marr[4] !== null) && (typeof marr[4] != "undefined"));		if (marr[5]) {			var rate = parseInt(marr[5]);			var cur = new Date();			var timerSet = false;			if ((marr["last"]) && ((cur - marr.last) <= rate)) {				if (dojo.event._canTimeout) {					if (marr["delayTimer"]) {						clearTimeout(marr.delayTimer);					}					var tod = parseInt(rate * 2);					var mcpy = dojo.lang.shallowCopy(marr);					marr.delayTimer = setTimeout(function () {						mcpy[5] = 0;						unrollAdvice(mcpy);					}, tod);				}				return;			} else {				marr.last = cur;			}		}		if (aroundFunc) {			aroundObj[aroundFunc].call(aroundObj, to);		} else {			if ((hasDelay) && ((dojo.render.html) || (dojo.render.svg))) {				dj_global["setTimeout"](function () {					if (msg) {						callObj[callFunc].call(callObj, to);					} else {						callObj[callFunc].apply(callObj, args);					}				}, delay);			} else {				if (msg) {					callObj[callFunc].call(callObj, to);				} else {					callObj[callFunc].apply(callObj, args);				}			}		}	};	var unRollSquelch = function () {		if (this.squelch) {			try {				return unrollAdvice.apply(this, arguments);			}			catch (e) {				dojo.debug(e);			}		} else {			return unrollAdvice.apply(this, arguments);		}	};	if ((this["before"]) && (this.before.length > 0)) {		dojo.lang.forEach(this.before.concat(new Array()), unRollSquelch);	}	var result;	try {		if ((this["around"]) && (this.around.length > 0)) {			var mi = new dojo.event.MethodInvocation(this, obj, args);			result = mi.proceed();		} else {			if (this.methodfunc) {				result = this.object[this.methodname].apply(this.object, args);			}		}	}	catch (e) {		if (!this.squelch) {			dojo.debug(e, "when calling", this.methodname, "on", this.object, "with arguments", args);			dojo.raise(e);		}	}	if ((this["after"]) && (this.after.length > 0)) {		dojo.lang.forEach(this.after.concat(new Array()), unRollSquelch);	}	return (this.methodfunc) ? result : null;}, getArr:function (kind) {	var type = "after";	if ((typeof kind == "string") && (kind.indexOf("before") != -1)) {		type = "before";	} else {		if (kind == "around") {			type = "around";		}	}	if (!this[type]) {		this[type] = [];	}	return this[type];}, kwAddAdvice:function (args) {	this.addAdvice(args["adviceObj"], args["adviceFunc"], args["aroundObj"], args["aroundFunc"], args["adviceType"], args["precedence"], args["once"], args["delay"], args["rate"], args["adviceMsg"], args["maxCalls"]);}, addAdvice:function (thisAdviceObj, thisAdvice, thisAroundObj, thisAround, adviceType, precedence, once, delay, rate, asMessage, maxCalls) {	var arr = this.getArr(adviceType);	if (!arr) {		dojo.raise("bad this: " + this);	}	var ao = [thisAdviceObj, thisAdvice, thisAroundObj, thisAround, delay, rate, asMessage, maxCalls];	if (once) {		if (this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr) >= 0) {			return;		}	}	if (precedence == "first") {		arr.unshift(ao);	} else {		arr.push(ao);	}}, hasAdvice:function (thisAdviceObj, thisAdvice, adviceType, arr) {	if (!arr) {		arr = this.getArr(adviceType);	}	var ind = -1;	for (var x = 0; x < arr.length; x++) {		var aao = (typeof thisAdvice == "object") ? (new String(thisAdvice)).toString() : thisAdvice;		var a1o = (typeof arr[x][1] == "object") ? (new String(arr[x][1])).toString() : arr[x][1];		if ((arr[x][0] == thisAdviceObj) && (a1o == aao)) {			ind = x;		}	}	return ind;}, removeAdvice:function (thisAdviceObj, thisAdvice, adviceType, once) {	var arr = this.getArr(adviceType);	var ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);	if (ind == -1) {		return false;	}	while (ind != -1) {		arr.splice(ind, 1);		if (once) {			break;		}		ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);	}	return true;}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -