📄 common.js
字号:
e = event ? event : window.event;
if(!e) {
e = getEvent();
}
if(!e) {
return null;
}
if(preventDefault) {
if(e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
if(stopPropagation) {
if(e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}
return e;
}
function loadcss(cssname) {
if(!CSSLOADED[cssname]) {
if(!$('css_' + cssname)) {
css = document.createElement('link');
css.id = 'css_' + cssname,
css.type = 'text/css';
css.rel = 'stylesheet';
css.href = 'data/cache/style_' + STYLEID + '_' + cssname + '.css?' + VERHASH;
var headNode = document.getElementsByTagName("head")[0];
headNode.appendChild(css);
} else {
$('css_' + cssname).href = 'data/cache/style_' + STYLEID + '_' + cssname + '.css?' + VERHASH;
}
CSSLOADED[cssname] = 1;
}
}
function showMenu(v) {
var ctrlid = isUndefined(v['ctrlid']) ? v : v['ctrlid'];
var showid = isUndefined(v['showid']) ? ctrlid : v['showid'];
var menuid = isUndefined(v['menuid']) ? showid + '_menu' : v['menuid'];
var ctrlObj = $(ctrlid);
var menuObj = $(menuid);
if(!menuObj) return;
var mtype = isUndefined(v['mtype']) ? 'menu' : v['mtype'];
var evt = isUndefined(v['evt']) ? 'mouseover' : v['evt'];
var pos = isUndefined(v['pos']) ? '43' : v['pos'];
var layer = isUndefined(v['layer']) ? 1 : v['layer'];
var duration = isUndefined(v['duration']) ? 2 : v['duration'];
var timeout = isUndefined(v['timeout']) ? 250 : v['timeout'];
var maxh = isUndefined(v['maxh']) ? 600 : v['maxh'];
var cache = isUndefined(v['cache']) ? 1 : v['cache'];
var drag = isUndefined(v['drag']) ? '' : v['drag'];
var dragobj = drag && $(drag) ? $(drag) : menuObj;
var fade = isUndefined(v['fade']) ? 0 : v['fade'];
var cover = isUndefined(v['cover']) ? 0 : v['cover'];
var zindex = isUndefined(v['zindex']) ? JSMENU['zIndex']['menu'] : v['zindex'];
var ctrlclass = isUndefined(v['ctrlclass']) ? '' : v['ctrlclass'];
var winhandlekey = isUndefined(v['win']) ? '' : v['win'];
zindex = cover ? zindex + 500 : zindex;
if(typeof JSMENU['active'][layer] == 'undefined') {
JSMENU['active'][layer] = [];
}
for(i in EXTRAFUNC['showmenu']) {
try {
eval(EXTRAFUNC['showmenu'][i] + '()');
} catch(e) {}
}
if(evt == 'click' && in_array(menuid, JSMENU['active'][layer]) && mtype != 'win') {
hideMenu(menuid, mtype);
return;
}
if(mtype == 'menu') {
hideMenu(layer, mtype);
}
if(ctrlObj) {
if(!ctrlObj.getAttribute('initialized')) {
ctrlObj.setAttribute('initialized', true);
ctrlObj.unselectable = true;
ctrlObj.outfunc = typeof ctrlObj.onmouseout == 'function' ? ctrlObj.onmouseout : null;
ctrlObj.onmouseout = function() {
if(this.outfunc) this.outfunc();
if(duration < 3 && !JSMENU['timer'][menuid]) {
JSMENU['timer'][menuid] = setTimeout(function () {
hideMenu(menuid, mtype);
}, timeout);
}
};
ctrlObj.overfunc = typeof ctrlObj.onmouseover == 'function' ? ctrlObj.onmouseover : null;
ctrlObj.onmouseover = function(e) {
doane(e);
if(this.overfunc) this.overfunc();
if(evt == 'click') {
clearTimeout(JSMENU['timer'][menuid]);
JSMENU['timer'][menuid] = null;
} else {
for(var i in JSMENU['timer']) {
if(JSMENU['timer'][i]) {
clearTimeout(JSMENU['timer'][i]);
JSMENU['timer'][i] = null;
}
}
}
};
}
}
if(!menuObj.getAttribute('initialized')) {
menuObj.setAttribute('initialized', true);
menuObj.ctrlkey = ctrlid;
menuObj.mtype = mtype;
menuObj.layer = layer;
menuObj.cover = cover;
if(ctrlObj && ctrlObj.getAttribute('fwin')) {menuObj.scrolly = true;}
menuObj.style.position = 'absolute';
menuObj.style.zIndex = zindex + layer;
menuObj.onclick = function(e) {
return doane(e, 0, 1);
};
if(duration < 3) {
if(duration > 1) {
menuObj.onmouseover = function() {
clearTimeout(JSMENU['timer'][menuid]);
JSMENU['timer'][menuid] = null;
};
}
if(duration != 1) {
menuObj.onmouseout = function() {
JSMENU['timer'][menuid] = setTimeout(function () {
hideMenu(menuid, mtype);
}, timeout);
};
}
}
if(cover) {
var coverObj = document.createElement('div');
coverObj.id = menuid + '_cover';
coverObj.style.position = 'absolute';
coverObj.style.zIndex = menuObj.style.zIndex - 1;
coverObj.style.left = coverObj.style.top = '0px';
coverObj.style.width = '100%';
coverObj.style.height = Math.max(document.documentElement.clientHeight, document.body.offsetHeight) + 'px';
coverObj.style.backgroundColor = '#000';
coverObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=50)';
coverObj.style.opacity = 0.5;
coverObj.onclick = function () { hideMenu(); };
$('append_parent').appendChild(coverObj);
_attachEvent(window, 'load', function () {
coverObj.style.height = Math.max(document.documentElement.clientHeight, document.body.offsetHeight) + 'px';
}, document);
}
}
if(drag) {
dragobj.style.cursor = 'move';
dragobj.onmousedown = function(event) {try{dragMenu(menuObj, event, 1);}catch(e){}};
}
if(cover) $(menuid + '_cover').style.display = '';
if(fade) {
var O = 0;
var fadeIn = function(O) {
if(O > 100) {
clearTimeout(fadeInTimer);
return;
}
menuObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + O + ')';
menuObj.style.opacity = O / 100;
O += 20;
var fadeInTimer = setTimeout(function () {
fadeIn(O);
}, 40);
};
fadeIn(O);
menuObj.fade = true;
} else {
menuObj.fade = false;
}
menuObj.style.display = '';
if(ctrlObj && ctrlclass) {
ctrlObj.className += ' ' + ctrlclass;
menuObj.setAttribute('ctrlid', ctrlid);
menuObj.setAttribute('ctrlclass', ctrlclass);
}
if(pos != '*') {
setMenuPosition(showid, menuid, pos);
}
if(BROWSER.ie && BROWSER.ie < 7 && winhandlekey && $('fwin_' + winhandlekey)) {
$(menuid).style.left = (parseInt($(menuid).style.left) - parseInt($('fwin_' + winhandlekey).style.left)) + 'px';
$(menuid).style.top = (parseInt($(menuid).style.top) - parseInt($('fwin_' + winhandlekey).style.top)) + 'px';
}
if(maxh && menuObj.scrollHeight > maxh) {
menuObj.style.height = maxh + 'px';
if(BROWSER.opera) {
menuObj.style.overflow = 'auto';
} else {
menuObj.style.overflowY = 'auto';
}
}
if(!duration) {
setTimeout('hideMenu(\'' + menuid + '\', \'' + mtype + '\')', timeout);
}
if(!in_array(menuid, JSMENU['active'][layer])) JSMENU['active'][layer].push(menuid);
menuObj.cache = cache;
if(layer > JSMENU['layer']) {
JSMENU['layer'] = layer;
}
}
var delayShowST = null;
function delayShow(ctrlObj, call, time) {
if(typeof ctrlObj == 'object') {
var ctrlid = ctrlObj.id;
call = call || function () { showMenu(ctrlid); };
}
var time = isUndefined(time) ? 500 : time;
delayShowST = setTimeout(function () {
if(typeof call == 'function') {
call();
} else {
eval(call);
}
}, time);
if(!ctrlObj.delayinit) {
_attachEvent(ctrlObj, 'mouseout', function() {clearTimeout(delayShowST);});
ctrlObj.delayinit = 1;
}
}
var dragMenuDisabled = false;
function dragMenu(menuObj, e, op) {
e = e ? e : window.event;
if(op == 1) {
if(dragMenuDisabled || in_array(e.target ? e.target.tagName : e.srcElement.tagName, ['TEXTAREA', 'INPUT', 'BUTTON', 'SELECT'])) {
return;
}
JSMENU['drag'] = [e.clientX, e.clientY];
JSMENU['drag'][2] = parseInt(menuObj.style.left);
JSMENU['drag'][3] = parseInt(menuObj.style.top);
document.onmousemove = function(e) {try{dragMenu(menuObj, e, 2);}catch(err){}};
document.onmouseup = function(e) {try{dragMenu(menuObj, e, 3);}catch(err){}};
doane(e);
}else if(op == 2 && JSMENU['drag'][0]) {
var menudragnow = [e.clientX, e.clientY];
menuObj.style.left = (JSMENU['drag'][2] + menudragnow[0] - JSMENU['drag'][0]) + 'px';
menuObj.style.top = (JSMENU['drag'][3] + menudragnow[1] - JSMENU['drag'][1]) + 'px';
doane(e);
}else if(op == 3) {
JSMENU['drag'] = [];
document.onmousemove = null;
document.onmouseup = null;
}
}
function setMenuPosition(showid, menuid, pos) {
var showObj = $(showid);
var menuObj = menuid ? $(menuid) : $(showid + '_menu');
if(isUndefined(pos) || !pos) pos = '43';
var basePoint = parseInt(pos.substr(0, 1));
var direction = parseInt(pos.substr(1, 1));
var important = pos.indexOf('!') != -1 ? 1 : 0;
var sxy = 0, sx = 0, sy = 0, sw = 0, sh = 0, ml = 0, mt = 0, mw = 0, mcw = 0, mh = 0, mch = 0, bpl = 0, bpt = 0;
if(!menuObj || (basePoint > 0 && !showObj)) return;
if(showObj) {
sxy = fetchOffset(showObj);
sx = sxy['left'];
sy = sxy['top'];
sw = showObj.offsetWidth;
sh = showObj.offsetHeight;
}
mw = menuObj.offsetWidth;
mcw = menuObj.clientWidth;
mh = menuObj.offsetHeight;
mch = menuObj.clientHeight;
switch(basePoint) {
case 1:
bpl = sx;
bpt = sy;
break;
case 2:
bpl = sx + sw;
bpt = sy;
break;
case 3:
bpl = sx + sw;
bpt = sy + sh;
break;
case 4:
bpl = sx;
bpt = sy + sh;
break;
}
switch(direction) {
case 0:
menuObj.style.left = (document.body.clientWidth - menuObj.clientWidth) / 2 + 'px';
mt = (document.documentElement.clientHeight - menuObj.clientHeight) / 2;
break;
case 1:
ml = bpl - mw;
mt = bpt - mh;
break;
case 2:
ml = bpl;
mt = bpt - mh;
break;
case 3:
ml = bpl;
mt = bpt;
break;
case 4:
ml = bpl - mw;
mt = bpt;
break;
}
var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
if(!important) {
if(in_array(direction, [1, 4]) && ml < 0) {
ml = bpl;
if(in_array(basePoint, [1, 4])) ml += sw;
} else if(ml + mw > scrollLeft + document.body.clientWidth && sx >= mw) {
ml = bpl - mw;
if(in_array(basePoint, [2, 3])) {
ml -= sw;
} else if(basePoint == 4) {
ml += sw;
}
}
if(in_array(direction, [1, 2]) && mt < 0) {
mt = bpt;
if(in_array(basePoint, [1, 2])) mt += sh;
} else if(mt + mh > scrollTop + document.documentElement.clientHeight && sy >= mh) {
mt = bpt - mh;
if(in_array(basePoint, [3, 4])) mt -= sh;
}
}
if(pos.substr(0, 3) == '210') {
ml += 69 - sw / 2;
mt -= 5;
if(showObj.tagName == 'TEXTAREA') {
ml -= sw / 2;
mt += sh / 2;
}
}
if(direction == 0 || menuObj.scrolly) {
if(BROWSER.ie && BROWSER.ie < 7) {
if(direction == 0) mt += scrollTop;
} else {
if(menuObj.scrolly) mt -= scrollTop;
menuObj.style.position = 'fixed';
}
}
if(ml) menuObj.style.left = ml + 'px';
if(mt) menuObj.style.top = mt + 'px';
if(direction == 0 && BROWSER.ie && !document.documentElement.clientHeight) {
menuObj.style.position = 'absolute';
menuObj.style.top = (document.body.clientHeight - menuObj.clientHeight) / 2 + 'px';
}
if(menuObj.style.clip && !BROWSER.opera) {
menuObj.style.clip = 'rect(auto, auto, auto, auto)';
}
}
function hideMenu(attr, mtype) {
attr = isUndefined(attr) ? '' : attr;
mtype = isUndefined(mtype) ? 'menu' : mtype;
if(attr == '') {
for(var i = 1; i <= JSMENU['layer']; i++) {
hideMenu(i, mtype);
}
return;
} else if(typeof attr == 'number') {
for(var j in JSMENU['active'][attr]) {
hideMenu(JSMENU['active'][attr][j], mtype);
}
return;
}else if(typeof attr == 'string') {
var menuObj = $(attr);
if(!menuObj || (mtype && menuObj.mtype != mtype)) return;
var ctrlObj = '', ctrlclass = '';
if((ctrlObj = $(menuObj.getAttribute('ctrlid'))) && (ctrlclass = menuObj.getAttribute('ctrlclass'))) {
var reg = new RegExp(' ' + ctrlclass);
ctrlObj.className = ctrlObj.className.replace(reg, '');
}
clearTimeout(JSMENU['timer'][attr]);
var hide = function() {
if(menuObj.cache) {
if(menuObj.style.visibility != 'hidden') {
menuObj.style.display = 'none';
if(menuObj.cover) $(attr + '_cover').style.display = 'none';
}
}else {
menuObj.parentNode.removeChild(menuObj);
if(menuObj.cover) $(attr + '_cover').parentNode.removeChild($(attr + '_cover'));
}
var tmp = [];
for(var k in JSMENU['active'][menuObj.layer]) {
if(attr != JSMENU['active'][menuObj.layer][k]) tmp.push(JSMENU['active'][menuObj.layer][k]);
}
JSMENU['active'][menuObj.layer] = tmp;
};
if(menuObj.fade) {
var O = 100;
var fadeOut = function(O) {
if(O == 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -