复制代码 代码如下:
//工具方法弹出蒙版 add by dning 2012-11-4
var maskshow = (function () {
var mask = null;
var curr = null;
var free = false;
var func = {
onresize: null,
onscroll: null
};
return function (el, fre, type) {
if (!mask) {
initmask();
}
free = !!fre;
if (el == null) {
show(curr, false);
show(mask, false);
showselects(true); //for ie6
curr = null;
if (!free) for (var s in func) {
window[s] = func[s];
func[s] = null;
}
} else {
if (curr)
show(curr, false);
curr = $(el)[0];
checkvisib(curr);
repos();
mask.style.zindex = maskshow.zindexback || 15;
curr.style.zindex = maskshow.zindexfore || 20;
show(curr, true);
show(mask, true);
showselects(false, el); //for ie6
if (!free) for (var s in func) {
func[s] = window[s];
window[s] = repos;
}
}
if (type == 0) {
mask.style.width = document.body.clientwidth + 'px';
mask.style.height = document.body.clientheight + 'px';
if (el) el.style.position = fixed;
} else {
mask.style.width = 0px;
mask.style.height = 0px;
if (el) el.style.position = absolute;
}
};
function showselects(b, box) {
if (!browser.ie6) return;
var sel = document.getelementsbytagname('select');
var vis = b ? 'visible' : 'hidden';
for (var i = 0; i if ((b || !childof(sel[i], box)) && sel[i].currentstyle.visibility != vis) sel[i].style.visibility = vis;
}
}
function childof(a, b) {
while (a && a != b) a = a.parentnode;
return a == b;
}
function initmask() {
/*
mask=document.createelement('iframe');
mask.src='://0';
*/
mask = document.createelement('div');
mask.style.csstext = 'background-color:{$c};border:none;position:absolute;visibility:hidden;opacity:{$a};filter:alpha(opacity={$a})'.replacewith({
c: maskshow.bgcolor || '#000',
a: maskshow.bgalpha || '0.5',
a: maskshow.bgalpha ? parseint(maskshow.bgalpha * 100) : '50'
});
document.body.appendchild(mask);
maskshow.mask = mask;
}
function checkvisib(el) {
var sty = el.style;
sty.position = 'absolute';
sty.left = '-10000px';
sty.top = '-10000px';
sty.visibility = 'visible';
sty.display = 'block';
sty.zindex = 10;
}
function repos() {
if (!curr) return;
var ps = $pagesize('doc');
setrect(mask, ps);
var rc = centerpos(ps, curr.offsetwidth, curr.offsetheight);
if (rc.left if (rc.top setrect(curr, rc);
}
function centerpos(ps, cw, ch) {
return {
left: ((ps.winwidth - cw) >> 1) + ps.scrollleft + (maskshow.adjustx || 0),
top: ((ps.winheight - ch) >> 1) + ps.scrolltop + (maskshow.adjusty || 0)
};
}
function setrect(el, rect) {
var sty = el.style;
sty.left = (rect.left || 0) + 'px';
sty.top = (rect.top || 0) + 'px';
if ('width' in rect)
sty.width = rect.width + 'px';
if ('height' in rect)
sty.height = rect.height + 'px';
}
function show(el, b) {
if (!el) return;
el.style.visibility = 'visible';
if (!b) {
el.style.left = -el.offsetwidth - 100 + 'px';
el.style.top = -el.offsetheight - 100 + 'px';
}
}
})();