|
/**
* 弹窗
*
* 获取弹窗内穿出的数据:
* 在弹窗页面调用父级页面的方法,例:parent.xxx(data);
* 在 xxx()方法中将获取到的数据赋值给 abc 变量;在的点击弹
* 窗确定按钮后调用 yyy()方法,将 abc 变量的值填充到页面的
* 某处。
*
* @param idName String 弹窗ID,不可重复
* @param src String 要打开窗口的url
* @param func function 回调函数,点击确定按钮后执行
* @param title String 弹窗标题
* @param divW int 弹窗宽度
* @param divH int 弹窗高度
* @param bottun boolean 是否显示确定按钮
* @param topSize int position的top值,距离顶部的距离,可用百分比
* @param leftSize int position的left值,距离顶部的距离,可用百分比
*
* 可选参数可以填 null
* function popup(idName,src[,func][,title][,divW][,divH][,bottun][,topSize][,leftSize]);
*/
function popup(idName,src,func,title,divW,divH,bottun,topSize,leftSize){
if(typeof idName == 'undefined'){alert('ID名称没有');return;}
if(typeof src == 'undefined'){alert('src没有');return;}
if(typeof title == 'undefined'){title = '这是标题';}
if(typeof func != 'function'){func = function(){} }
//弹窗宽度和高度
var divW = (typeof divW == 'number') ? divW : 700;
var divH = (typeof divH == 'number') ? divH : 500;
//底边栏高度
var divBottomH = (bottun == true) ? 40 : 30;
var topSize = (typeof topSize == 'number' || typeof topSize == 'string' ) ? topSize : '3%';
var leftSize = (typeof leftSize == 'number' || typeof leftSize == 'string' ) ? leftSize : '15%';
var divTopH = 30; //标题高度
var divMiddleH = divH - divTopH - divBottomH;//iframe高度
var div = document.createElement('div');
var divTop = document.createElement('div');
var divBigSmall = document.createElement('div');
var divClose = document.createElement('div');
var divLittle = document.createElement('div');
var divMiddle = document.createElement('div');
var divBottom = document.createElement('div');
var divBottonOk = document.createElement('div');
var divBottonCancel = document.createElement('div');
var divWiden = document.createElement('div');
//div 样式
div.style.cssText = "width:"+divW+"px;height:"+divH+"px;position:fixed;top:"+topSize+";left:"+leftSize+";z-index:999;display:block;font-size:16px;font-family:Arial,'Microsoft YaHei';font-weight:bold;border:1px solid #3377bb;overflow:hidden;";
div.id = idName;
div.innerHTML = '';
//divTop 样式
divTop.style.cssText = "width:100%;height:"+divTopH+"px;line-height:"+divTopH+"px;text-indent:20px;color:#fff;background:#5599dd;cursor:move;";
divLittle.style.cssText = "width:15px;height:13px;float:right;margin:8px 12px 0 0;cursor:pointer;border: 1px solid #fff;line-height:11px;text-indent:5px;font-weight:normal;";
divBigSmall.style.cssText = "width:15px;height:13px;float:right;margin:8px 10px 0 0;cursor:pointer;border: 1px solid #fff;";
divClose.style.cssText = "width:15px;height:13px;float:right;margin:8px 12px 0 0;cursor:pointer;border: 1px solid #fff;line-height:10px;text-indent:4px;font-weight:normal;font-size:13px;";
divTop.innerHTML = title;
divLittle.innerHTML = '-';
divClose.innerHTML = 'x';
//divMiddle 样式
divMiddle.style.cssText = "width:100%;background:#fafaff;height:"+divMiddleH+"px;";
divMiddle.innerHTML = '<iframe src="'+src+'" id="popup'+idName+'" name="popup'+idName+'" frameborder="0" width="100%" height="100%"></iframe>';
//divBottom 样式
divBottom.style.cssText = "width:100%;height:"+divBottomH+"px;background:#fafaff;";
//ok cancel 样式
var bottonH = 25;
divBottonOk.style.cssText = "width:60px;height:"+bottonH+"px;float:right;line-height:"+bottonH+"px;background:#3377bb;cursor:pointer;text-align:center;color:white;margin:8px 20px 0 0;";
divBottonCancel.style.cssText = "width:60px;height:"+bottonH+"px;float:right;line-height:"+bottonH+"px;background:#3377bb;cursor:pointer;text-align:center;color:white;margin:8px 20px 0 0;";
divBottonOk.innerHTML = '确定';
divBottonCancel.innerHTML = '取消';
//右下拉动窗口 样式
divWiden.style.cssText = "width:10px;height:10px;position:absolute;bottom:0px;right:0px;cursor:se-resize;";
//OK 事件
divBottonOk.onclick = function (){
func();
document.body.removeChild(div);
}
//cancel 事件
divClose.onclick = divBottonCancel.onclick = function (){
document.body.removeChild(div);
}
//移动窗口事件
var L = null; //上一次移动div后的div.style.left的值
var T = null;
divTop.onmousedown = function(e){
var e = e || event;
var left = e.clientX - div.offsetLeft;
var top = e.clientY - div.offsetTop;
document.onmousemove = function (ev){
var ev = ev || event;
L = div.style.left = ev.clientX - left + 'px';
T = div.style.top = ev.clientY - top + 'px';
}
document.onmouseup = function (){
document.onmousemove = null;
document.onmouseup = null;
}
}
//窗口放大缩小
divBigSmall.onclick = divTop.ondblclick = function (){
if(document.body.offsetWidth != div.offsetWidth - 2){
div.style.top = '0px';
div.style.left = '0px';
div.style.width = '100%';
div.style.height = '100%';
divMiddle.style.height = div.offsetHeight - divTopH - divBottomH - 2 +'px';
}else{
if(L && T){
div.style.top = T;
div.style.left = L;
}else{
div.style.top = '5%';
div.style.left = '15%';
}
div.style.width = divW+'px';
div.style.height = divH+'px';
divMiddle.style.height = divMiddleH+'px';
}
}
//拉动改变窗口大小
var W = null;
var H = null;
divWiden.onmousedown = function (e){
var e = e || event;
var X = e.clientX;
var Y = e.clientY;
divW = div.offsetWidth;
divH = div.offsetHeight;
document.onmousemove = function (ev){
var ev = ev || event;
W = ev.clientX - X;
H = ev.clientY - Y;
div.style.width = divW + W +'px';
div.style.height = divH + H +'px';
divMiddleH = div.offsetHeight - divTopH - divBottomH - 2;
divMiddle.style.height = divMiddleH+'px';
}
document.onmouseup = function (){
document.onmousemove = null;
document.onmouseup = null;
divW = divW + W;
divH = divH + H;
}
}
//最小化
divLittle.onclick = function (){
if(div.offsetWidth != 202 && div.offsetHeight != divTopH+2){
div.style.width = '200px';
div.style.height = divTopH+'px';
}else{
div.style.width = divW+'px';
div.style.height = divH+'px';
}
}
div.appendChild(divTop);
divTop.appendChild(divClose);
divTop.appendChild(divBigSmall);
divTop.appendChild(divLittle);
div.appendChild(divMiddle);
divBottom.appendChild(divWiden);
if(bottun){
divBottom.appendChild(divBottonCancel);
divBottom.appendChild(divBottonOk);
}
div.appendChild(divBottom);
if(!document.getElementById(idName)){
document.body.appendChild(div);
}
};
|