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

📄 common.js

📁 ZK 基础介绍 功能操作 模块 结合数据库操作
💻 JS
📖 第 1 页 / 共 4 页
字号:
				info.element.style.visibility = info.visibility;		}		return;	}	var cts = zk._actg1;	for (var j = 0; j < cts.length; ++j) {		var els = document.getElementsByTagName(cts[j]);		var ifr = "IFRAME" == cts[j];		loop_els:		for (var k = 0 ; k < els.length; k++) {			var el = els[k];			if (!zk.isRealVisible(el)) continue;			for (var m = 0; m < ary.length; ++m) {				if (zk.isAncestor(ary[m], el))					continue loop_els;			}			var overlapped = false;			if (!ifr || getZKAttr(el, "autohide") == "true") {			//Note: z.autohide may be set dynamically,			//so consider it as not overlapped				for (var m = 0; m < ary.length; ++m) {					if (zk.isOverlapped(ary[m], el)) {						overlapped = true;						break;					}				}			}			if (overlapped) {				for (var m = 0; m < zk._hidCvred.length; ++m) {					if (el == zk._hidCvred[m].element)						continue loop_els;				}				zk._hidCvred					.push({element: el, visibility: el.style.visibility});				el.style.visibility = "hidden";			} else {				for (var m = 0; m < zk._hidCvred.length; ++m) {					if (el == zk._hidCvred[m].element) {						el.style.visibility = zk._hidCvred[m].visibility;						zk._hidCvred.splice(m, 1);						break;					}				}			}		}	}};/** Retrieve a member by use of a.b.c */zk.resolve = function (fullnm) {	for (var j = 0, v = window;;) {		var k = fullnm.indexOf('.', j);		var nm = k >= 0 ? fullnm.substring(j, k): fullnm.substring(j);		v = v[nm];		if (k < 0 || !v) return v;		j = k + 1;	}};/** Sets the style. */zk.setStyle = function (el, style) {	for (var j = 0, k = 0; k >= 0; j = k + 1) {		k = style.indexOf(';', j);		var s = k >= 0 ? style.substring(j, k): style.substring(j);		var l = s.indexOf(':');		var nm, val;		if (l < 0) {			nm = s.trim(); val = "";		} else {			nm = s.substring(0, l).trim();			val = s.substring(l + 1).trim();		}		if (nm) el.style[nm.camelize()] = val;	}};/** Returns the text-relevant style (same as HTMLs.getTextRelevantStyle). * @param incwd whether to include width * @param inchgh whether to include height */zk.getTextStyle = function (style, incwd, inchgh) {	var ts = "";	for (var j = 0, k = 0; k >= 0; j = k + 1) {		k = style.indexOf(';', j);		var s = k >= 0 ? style.substring(j, k): style.substring(j);		var l = s.indexOf(':');		var nm = l < 0 ? s.trim(): s.substring(0, l).trim();		if (nm.startsWith("font")  || nm.startsWith("text")		|| zk._txtstyles.contains(nm)		|| (incwd && nm == "width") || (inchgh && nm == "height"))			ts += s + ';';	}	return ts;};if (!zk._txtstyles)	zk._txtstyles = ["color", "background-color", "background",		"white-space"];/** Backup a style of the specified name. * The second call to backupStyle is ignored until zk.restoreStyle is called. * Usually used with onmouseover. */zk.backupStyle = function (el, nm) {	var bknm = "zk_bk" + nm;	if (!el.getAttribute(bknm))		el.setAttribute(bknm, el.style[nm] || "_zk_none_");};/** Restore the style of the specified name. * Usually used with onover. */zk.restoreStyle = function (el, nm) {	if (el && el.getAttribute && el.style) { //el might be removed!		var bknm = "zk_bk" + nm;		var val = el.getAttribute(bknm);		if (val) {			el.removeAttribute(bknm);			el.style[nm] = val == "_zk_none_" ? "": val;		}	}};/** Scroll inner into visible, assuming outer has a scrollbar. */zk.scrollIntoView = function (outer, inner) {	if (outer && inner) {		var padding = $int(Element.getStyle(inner, "padding-top"));		var limit = inner.offsetTop - padding;		if (limit < outer.scrollTop) {			outer.scrollTop = limit;		} else {			limit = 3 + inner.offsetTop + inner.offsetHeight				- outer.scrollTop - outer.clientHeight;			if (limit > 0) outer.scrollTop += limit;		}	}};/** Go to the specified uri. * @param overwrite whether to overwrite the history * @param target the target frame (ignored if overwrite is true */zk.go = function (url, overwrite, target) {	var bProgress = !zk.opera && !zk.keepDesktop		&& window.location.href.indexOf('#') < 0; //whether to show progress		//we don't show progress for opera, since user might press BACK to		//return this page (and found the progress dlg remains on browse)		//		//Bug 1773575: with # and the same url, no redraw	if (!url) {		if (bProgress) zk.progress(); //BACK button issue		window.location.reload();	} else if (overwrite) {		if (bProgress) zk.progress();		window.location.replace(url);	} else if (target) {		//we have to process query string because browser won't do it		//even if we use insertHTMLBeforeEnd("<form...")		var frm = document.createElement("FORM");		document.body.appendChild(frm);		var j = url.indexOf('?');		if (j > 0) {			var qs = url.substring(j + 1);			url = url.substring(0, j);			zk.queryToHiddens(frm, qs);		}		frm.name = "go";		frm.action = url;		frm.method = "GET";		frm.target = target;		if (url && !zk.isNewWindow(url, target) && bProgress)			zk.progress();		frm.submit();	} else {		if (bProgress) zk.progress();		window.location.href = url;	}};/** Tests whether a new window will be opened. */zk.isNewWindow = function (url, target) {	return url.startsWith("mailto:") || url.startsWith("javascript:")		|| (target && target != "_self");};/* Convert query string (a=b&c=d) to hiddens of the specified form. */zk.queryToHiddens = function (frm, qs) {	for(var j = 0;;) {		var k = qs.indexOf('=', j);		var l = qs.indexOf('&', j);		var nm, val;		if (k < 0 || (k > l && l >= 0)) { //no value part			nm = l >= 0 ? qs.substring(j, l): qs.substring(j);			val = "";		} else {			nm = qs.substring(j, k);			val = l >= 0 ? qs.substring(k + 1, l): qs.substring(k + 1);		}		zk.newHidden(nm, val, frm);		if (l < 0) return; //done		j = l + 1;	}};/** Creates a frame if it is not created yet. */zk.newFrame = function (name, src, style) {	var frm = $e(name);	if (frm) return frm;	if (!src) src = zk.getUpdateURI('/web/img/spacer.gif');		//IE with HTTPS: we must specify the src	var html = '<iframe id="'+name+'" name="'+name+'" src="'+src+'"';	if (style) html += ' style="'+style+'"';	html += '></iframe>';	zk.insertHTMLBeforeEnd(document.body, html);	return $e(name);};/** Returns the nearest form, or null if not available. * @since 3.0.0 */zk.formOf = function (n) {	for (; n; n = n.parentNode)		if ($tag(n) == "FORM")			return n;};/** Creates a hidden field. * @param parent to assign the hidden to. Ignored if null. * @since 3.0.0 */zk.newHidden = function (nm, val, parent) {	var inp = document.createElement("INPUT");	inp.type = "hidden";	inp.name = nm;	inp.value = val;	if (parent) parent.appendChild(inp);	return inp;};/** Returns the number of columns (considering colSpan) */zk.ncols = function (cells) {	var cnt = 0;	if (cells) {		for (var j = 0; j < cells.length; ++j) {			var span = cells[j].colSpan;			if (span >= 1) cnt += span;			else ++cnt;		}	}	return cnt;};/** Copies the width of each cell from one row to another. * It handles colspan of srcrows, but not dst's colspan, nor rowspan * * @param {Object} srcrows all rows from the source table. Don't pass just one row * @param {Object} mate a component gird or tree or listbox. * @param {Boolean} stripe whether renders the stripe. * @param {Boolean} again whether re-calculates the width of each cell for opera or safari * @since 3.0.0 */zk.cpCellWidth = function (dst, srcrows, mate, stripe, again) {	if (dst == null || srcrows == null || !srcrows.length	|| !dst.cells.length || !zk.isRealVisible(dst))		return;		//Note: With Opera, we cannot use table-layout=fixed and we have to assign	//the table width (test case: fixed-table-header.html)		var hdtable = dst.parentNode.parentNode;	if (hdtable.style.width) {		var bdtable = srcrows[0].parentNode.parentNode;		bdtable.style.width = hdtable.style.width;			} else if (zk.opera && hdtable) {		hdtable.style.tableLayout = "auto";		hdtable.style.width = "";	}	var found;	var scOdd = getZKAttr(mate.element, "scOddRow"), dstwds = [], cacheCss = [];	for (var i = 0, even = true; i < srcrows.length; ++i) {		var row = srcrows[i];		if (stripe && scOdd && zk.isVisible(row)) {			zk.addClass(row, scOdd, !even);			even = !even;		}		if(!found && getZKAttr(row, "sel") == "true") found = row;		var cells = row.cells;		for (var j = 0, z = 0; j < cells.length; ++j) {			if (j < dst.cells.length) {				var s = cells[j], d = dst.cells[z];				if (s.colSpan > 1) {					if (s.colSpan + z <= dst.cells.length) {						var unwd = [], total = 0, ttlOffset = 0;						for (var k = 0; k < s.colSpan; k++) {							var d = dst.cells[z+k];							if (!dstwds[z+k]) {								var wd =  d.style.width;								if (wd) {									if (wd == "auto" || wd.indexOf('%') > -1) 										d.style.width = zk.revisedSize(d, d.offsetWidth) + "px";									dstwds[z+k] = d.offsetWidth;									total += dstwds[z+k];									ttlOffset += d.offsetWidth;										} else unwd.push([d, k]);							} else {								total += dstwds[z+k];								ttlOffset += d.offsetWidth;							}													}						var uuid = $uuid(s);						var cell = $e(uuid + "!cell") || $e(uuid + "!cave");						if (unwd.length) {							var amount = s.offsetWidth - total;							if (amount < unwd.length * 20) {								amount = unwd.length * 20;								var rwd = zk.revisedSize(s, amount + total);								cell.style.width = zk.revisedSize(cell, rwd) + "px";								s.style.width = rwd + "px";							}							var each = Math.max(Math.floor((amount) / unwd.length), 0);							while (unwd.length)	{																var data = unwd.shift();								var d = data[0], k = data[1];								if (unwd.length) amount -= each;									else each = amount;								var wd = zk.safari ? each  : zk.revisedSize(d, each);								d.style.width = wd + "px";																var cave = $e($uuid(d) + "!cave");								if (cave) cave.style.width = zk.revisedSize(cave, wd) + "px";								dstwds[z+k] = d.offsetWidth;								total += dstwds[z+k];								ttlOffset += d.offsetWidth;							} 						}																				var rwd = zk.revisedSize(s, total);						cell.style.width = zk.revisedSize(cell, rwd); + "px";							s.style.width = rwd + "px";								if (!again && i == 0 && zk.ie) setTimeout(function (){zk.cpCellWidth(dst, srcrows, mate, false, true)}, 500);																				}									} else {					if (!dstwds[z] || d.offsetWidth != s.offsetWidth || zk.ie || zk.safari) { 					// Note: we have to specify the width of each column for opera.						if (!dstwds[z]) {							var wd =  d.style.width;														if (wd == "auto" || wd.indexOf('%') > -1) 								d.style.width = zk.revisedSize(d, d.offsetWidth) + "px";							wd = d.style.width;							dstwds[z] = wd ? (zk.ie && z == dst.cells.length -1 ? d.offsetWidth - 2 : d.offsetWidth) :								zk.ie && z == dst.cells.length-1 ? s.offsetWidth - 2 : s.offsetWidth;														var w;							if (!wd) {								w = zk.revisedSize(d, dstwds[z]);								d.style.width = w + "px";							} else w = $int(wd);							var cell = $e($uuid(d) + "!cave");							if (cell) cell.style.width = zk.revisedSize(cell, w) + "px";													} 												var uuid = $uuid(s);						var cell = $e(uuid + "!cell") || $e(uuid + "!cave");						if (cell && (!cacheCss[j] || s.className != cacheCss[j][0].el.className || s.style.cssText != "")) {											cacheCss[j] = [{el: s , size : zk.sumStyles(s, "lr", zk.borders) + zk.sumStyles(s, "lr", zk.paddings)}, 								{el: cell, size : zk.sumStyles(cell, "lr", zk.borders) + zk.sumStyles(cell, "lr", zk.paddings)}];											} 									var rwd = dstwds[z] - cacheCss[j][0].size;						if (cell) cell.style.width = Math.max(rwd - cacheCss[j][1].size, 0) + "px"; // #Bugs 1817636						s.style.width = (rwd < 0 ? 0 : rwd) + "px";					}				}				z += s.colSpan; // header count			}		}			}	if (found) zk.scrollIntoView(mate.body, found);	if (!again && (zk.safari || zk.opera)) setTimeout(function (){zk.cpCellWidth(dst, srcrows, mate, false, true)}, 5);		// Note :we have to re-calculate the width of cell column for safari.};/**Copies the width of each cell from the element's header. * It handles colspan of srcrows. * * @param {Array} dst the element's header.  * @param {Array} srcrows each cell. * @since 3.0 */zk.cpCellArrayWidth = function (dst, srcrows) {	if (dst == null || srcrows == null || !srcrows.length	|| !dst.cells.length)		return;		for (var j = 0, k = srcrows.length; j < k; j++) {		var s = srcrows.shift();		var z = s.cellIndex;		var d = dst.cells[z];		var wd = 0;		if (s.colSpan > 1) {			if (s.colSpan + z <= dst.cells.length) {								for (var k = 0; k < s.colSpan; k++) {					var hd = dst.cells[z+k];					wd += zk.ie && z+k == dst.cells.length -1 ? hd.offsetWidth - 2 : hd.offsetWidth; 																}			}		} else			wd += zk.ie && z == dst.cells.length -1 ? d.offsetWidth - 2 : d.offsetWidth;		var uuid = $uuid(s);		var cell = $e(uuid + "!cell") || $e(uuid + "!cave");		var rwd = zk.revisedSize(s, wd);		if (cell) cell.style.width = zk.revisedSize(cell, rwd) + "px";		s.style.width = rwd + "px";	}};//Number///** digits specifies at least the number of digits must be ouput. */zk.formatFixed = function (val, digits) {	var s = "" + val;	for (var j = digits - s.length; --j >= 0;)		s = "0" + s;	return s;};//Date///** Parses a string into a Date object. * @param strict whether not to lenient */zk.parseDate = function (txt, fmt, strict) {	if (!fmt) fmt = "yyyy/MM/dd";	var val = new Date();	var y = val.getFullYear(), m = val.getMonth(), d = val.getDate();	var ts = txt.split(/\W+/);	for (var i = 0, j = 0; j < fmt.length; ++j) {		var cc = fmt.charAt(j);		if (cc == 'y' || cc == 'M' || cc == 'd' || cc == 'E') {			var len = 1;			for (var k = j; ++k < fmt.length; ++len)				if (fmt.charAt(k) != cc)					break;			var nosep; //no separator			if (k < fmt.length) {				var c2 = fmt.charAt(k);				nosep = c2 == 'y' || c2 == 'M' || c2 == 'd' || c2 == 'E';			}			var token = ts[i++];			switch (cc) {			case 'y':				if (nosep) {					if (len <= 3) len = 2;					if (token.length > len) {						ts[--i] = token.substring(len);						token = token.substring(0, len);					}				}				y = $int(token);				if (isNaN(y)) return null; //failed				if (y < 100) y += y > 29 ? 1900 : 2000;				break;			case 'M':				if (len <= 2) {					if (nosep && token.length > 2) {						ts[--i] = token.substring(2);						token = token.substring(0, 2);					}					m = $int(token) - 1;					if (isNaN(m)) return null; //failed				} else {					for (var l = 0;; ++l) {						if (l == 12) return null; //failed						if (len == 3) {							if (zk.SMON[l].split(/\W+/)[0] == token) {								m = l;								break;							}						} else {							if (zk.FMON[l].split(/\W+/)[0] == token) {								m = l;								break;							}						}					}				}				break;			case 'd':				if (nosep) {					if (len < 2) len = 2;					if (token.length > len) {						ts[--i] = token.substring(len);						token = token.substring(0, len);					}				}				d = $int(token);				if (isNaN(d)) return null; //failed				break;			//case 'E': ignored			}			j = k - 1;		}	}	var dt = new Date(y, m, d);	if (strict && (dt.getFullYear() != y	|| dt.getMonth() != m || dt.getDate() != d))		return null; //failed	return dt;};/** Generates a formated string for the specified Date object. */zk.formatDate = function (val, fmt) {	if (!fmt) fmt = "yyyy/MM/dd";	var txt = "";	for (var j = 0; j < fmt.length; ++j) {		var cc = fmt.charAt(j);		if (cc == 'y' || cc == 'M' || cc == 'd' || cc == 'E') {			var len = 1;			for (var k = j; ++k < fmt.length; ++len)				if (fmt.charAt(k) != cc)					break;			switch (cc) {			case 'y':				if (len <= 3) txt += zk.formatFixed(val.getFullYear() % 100, 2);

⌨️ 快捷键说明

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