common.js
来自「Hippo CMS是一个以信息为中心的开源内容管理系统。Hippo CMS目标是」· JavaScript 代码 · 共 561 行 · 第 1/2 页
JS
561 行
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.event.common");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.extras");
dojo.require("dojo.lang.func");
dojo.event = new function () {
this._canTimeout = dojo.lang.isFunction(dj_global["setTimeout"]) || dojo.lang.isAlien(dj_global["setTimeout"]);
function interpolateArgs(args, searchForNames) {
var dl = dojo.lang;
var ao = {srcObj:dj_global, srcFunc:null, adviceObj:dj_global, adviceFunc:null, aroundObj:null, aroundFunc:null, adviceType:(args.length > 2) ? args[0] : "after", precedence:"last", once:false, delay:null, rate:0, adviceMsg:false, maxCalls:-1};
switch (args.length) {
case 0:
return;
case 1:
return;
case 2:
ao.srcFunc = args[0];
ao.adviceFunc = args[1];
break;
case 3:
if ((dl.isObject(args[0])) && (dl.isString(args[1])) && (dl.isString(args[2]))) {
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
} else {
if ((dl.isString(args[1])) && (dl.isString(args[2]))) {
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
} else {
if ((dl.isObject(args[0])) && (dl.isString(args[1])) && (dl.isFunction(args[2]))) {
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
var tmpName = dl.nameAnonFunc(args[2], ao.adviceObj, searchForNames);
ao.adviceFunc = tmpName;
} else {
if ((dl.isFunction(args[0])) && (dl.isObject(args[1])) && (dl.isString(args[2]))) {
ao.adviceType = "after";
ao.srcObj = dj_global;
var tmpName = dl.nameAnonFunc(args[0], ao.srcObj, searchForNames);
ao.srcFunc = tmpName;
ao.adviceObj = args[1];
ao.adviceFunc = args[2];
}
}
}
}
break;
case 4:
if ((dl.isObject(args[0])) && (dl.isObject(args[2]))) {
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
if ((dl.isString(args[0])) && (dl.isString(args[1])) && (dl.isObject(args[2]))) {
ao.adviceType = args[0];
ao.srcObj = dj_global;
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
if ((dl.isString(args[0])) && (dl.isFunction(args[1])) && (dl.isObject(args[2]))) {
ao.adviceType = args[0];
ao.srcObj = dj_global;
var tmpName = dl.nameAnonFunc(args[1], dj_global, searchForNames);
ao.srcFunc = tmpName;
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
if ((dl.isString(args[0])) && (dl.isObject(args[1])) && (dl.isString(args[2])) && (dl.isFunction(args[3]))) {
ao.srcObj = args[1];
ao.srcFunc = args[2];
var tmpName = dl.nameAnonFunc(args[3], dj_global, searchForNames);
ao.adviceObj = dj_global;
ao.adviceFunc = tmpName;
} else {
if (dl.isObject(args[1])) {
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = dj_global;
ao.adviceFunc = args[3];
} else {
if (dl.isObject(args[2])) {
ao.srcObj = dj_global;
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
ao.srcObj = ao.adviceObj = ao.aroundObj = dj_global;
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
ao.aroundFunc = args[3];
}
}
}
}
}
}
break;
case 6:
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3];
ao.adviceFunc = args[4];
ao.aroundFunc = args[5];
ao.aroundObj = dj_global;
break;
default:
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3];
ao.adviceFunc = args[4];
ao.aroundObj = args[5];
ao.aroundFunc = args[6];
ao.once = args[7];
ao.delay = args[8];
ao.rate = args[9];
ao.adviceMsg = args[10];
ao.maxCalls = (!isNaN(parseInt(args[11]))) ? args[11] : -1;
break;
}
if (dl.isFunction(ao.aroundFunc)) {
var tmpName = dl.nameAnonFunc(ao.aroundFunc, ao.aroundObj, searchForNames);
ao.aroundFunc = tmpName;
}
if (dl.isFunction(ao.srcFunc)) {
ao.srcFunc = dl.getNameInObj(ao.srcObj, ao.srcFunc);
}
if (dl.isFunction(ao.adviceFunc)) {
ao.adviceFunc = dl.getNameInObj(ao.adviceObj, ao.adviceFunc);
}
if ((ao.aroundObj) && (dl.isFunction(ao.aroundFunc))) {
ao.aroundFunc = dl.getNameInObj(ao.aroundObj, ao.aroundFunc);
}
if (!ao.srcObj) {
dojo.raise("bad srcObj for srcFunc: " + ao.srcFunc);
}
if (!ao.adviceObj) {
dojo.raise("bad adviceObj for adviceFunc: " + ao.adviceFunc);
}
if (!ao.adviceFunc) {
dojo.debug("bad adviceFunc for srcFunc: " + ao.srcFunc);
dojo.debugShallow(ao);
}
return ao;
}
this.connect = function () {
if (arguments.length == 1) {
var ao = arguments[0];
} else {
var ao = interpolateArgs(arguments, true);
}
if (dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")) {
if (dojo.render.html.ie) {
ao.srcFunc = "onkeydown";
this.connect(ao);
}
ao.srcFunc = "onkeypress";
}
if (dojo.lang.isArray(ao.srcObj) && ao.srcObj != "") {
var tmpAO = {};
for (var x in ao) {
tmpAO[x] = ao[x];
}
var mjps = [];
dojo.lang.forEach(ao.srcObj, function (src) {
if ((dojo.render.html.capable) && (dojo.lang.isString(src))) {
src = dojo.byId(src);
}
tmpAO.srcObj = src;
mjps.push(dojo.event.connect.call(dojo.event, tmpAO));
});
return mjps;
}
var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc);
if (ao.adviceFunc) {
var mjp2 = dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj, ao.adviceFunc);
}
mjp.kwAddAdvice(ao);
return mjp;
};
this.log = function (a1, a2) {
var kwArgs;
if ((arguments.length == 1) && (typeof a1 == "object")) {
kwArgs = a1;
} else {
kwArgs = {srcObj:a1, srcFunc:a2};
}
kwArgs.adviceFunc = function () {
var argsStr = [];
for (var x = 0; x < arguments.length; x++) {
argsStr.push(arguments[x]);
}
dojo.debug("(" + kwArgs.srcObj + ")." + kwArgs.srcFunc, ":", argsStr.join(", "));
};
this.kwConnect(kwArgs);
};
this.connectBefore = function () {
var args = ["before"];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
return this.connect.apply(this, args);
};
this.connectAround = function () {
var args = ["around"];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
return this.connect.apply(this, args);
};
this.connectOnce = function () {
var ao = interpolateArgs(arguments, true);
ao.once = true;
return this.connect(ao);
};
this.connectRunOnce = function () {
var ao = interpolateArgs(arguments, true);
ao.maxCalls = 1;
return this.connect(ao);
};
this._kwConnectImpl = function (kwArgs, disconnect) {
var fn = (disconnect) ? "disconnect" : "connect";
if (typeof kwArgs["srcFunc"] == "function") {
kwArgs.srcObj = kwArgs["srcObj"] || dj_global;
var tmpName = dojo.lang.nameAnonFunc(kwArgs.srcFunc, kwArgs.srcObj, true);
kwArgs.srcFunc = tmpName;
}
if (typeof kwArgs["adviceFunc"] == "function") {
kwArgs.adviceObj = kwArgs["adviceObj"] || dj_global;
var tmpName = dojo.lang.nameAnonFunc(kwArgs.adviceFunc, kwArgs.adviceObj, true);
kwArgs.adviceFunc = tmpName;
}
kwArgs.srcObj = kwArgs["srcObj"] || dj_global;
kwArgs.adviceObj = kwArgs["adviceObj"] || kwArgs["targetObj"] || dj_global;
kwArgs.adviceFunc = kwArgs["adviceFunc"] || kwArgs["targetFunc"];
return dojo.event[fn](kwArgs);
};
this.kwConnect = function (kwArgs) {
return this._kwConnectImpl(kwArgs, false);
};
this.disconnect = function () {
if (arguments.length == 1) {
var ao = arguments[0];
} else {
var ao = interpolateArgs(arguments, true);
}
if (!ao.adviceFunc) {
return;
}
if (dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")) {
if (dojo.render.html.ie) {
ao.srcFunc = "onkeydown";
this.disconnect(ao);
}
ao.srcFunc = "onkeypress";
}
if (!ao.srcObj[ao.srcFunc]) {
return null;
}
var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc, true);
mjp.removeAdvice(ao.adviceObj, ao.adviceFunc, ao.adviceType, ao.once);
return mjp;
};
this.kwDisconnect = function (kwArgs) {
return this._kwConnectImpl(kwArgs, true);
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?