243 lines
8.1 KiB
JavaScript
243 lines
8.1 KiB
JavaScript
/*!
|
||
* 主 题:《页面弹出窗口》
|
||
* 说 明:用于子页面弹出时的窗口。
|
||
* 功能描述:
|
||
* 1、生成弹出窗口,窗口内包括iframe控件,用于加载实际控制页面;
|
||
* 2、窗口弹出时,生成背景遮罩;
|
||
* 3、窗口最小为宽高100,小于等于100时,宽高值默认为浏览器窗口的百分比;
|
||
*
|
||
*
|
||
* 作 者:宋雷鸣
|
||
* 开发时间: 2012年12月28日
|
||
*/
|
||
//窗体Jquery对象
|
||
PageBox.prototype.WinBox = null;
|
||
//窗口关闭时的事件
|
||
PageBox.prototype.CloseEvent = null;
|
||
//弹出窗口的主类
|
||
//title:窗口标题
|
||
//page:打开的页面
|
||
//width:窗口宽度
|
||
//height:窗口高度
|
||
//widId:窗口id
|
||
function PageBox(title, page, width, height, winId) {
|
||
this.Init(title, page, width, height, winId);
|
||
}
|
||
//初始化参数
|
||
PageBox.prototype.Init = function (title, page, width, height, winId) {
|
||
title = title != null && title != "" ? title : "newWinBox";
|
||
//如果为空,则为浏览器窗口一半宽高
|
||
width = width != null && width != 0 && width != "" ? Number(width) : $("body").width() / 2;
|
||
height = height != null && height != 0 && height != "" ? Number(height) : $("body").height() / 2;
|
||
//如果宽高小于100,则默认为浏览器窗口的百分比
|
||
width = width > 100 ? Number(width) : $("body").width() * Number(width) / 100;
|
||
height = height > 100 ? Number(height) : $("body").height() * Number(height) / 100;
|
||
//alert(winId);
|
||
if (winId == null) {
|
||
winId = new Date().ToString() + "_" + Math.floor(Math.random() * 1000 + 1);
|
||
}
|
||
//
|
||
this.Title = title;
|
||
this.Width = width;
|
||
this.Height = height;
|
||
this.Page = page;
|
||
this.WinId = winId;
|
||
}
|
||
//创建窗口,并打开
|
||
PageBox.prototype.Open = function (title, page, width, height, winId) {
|
||
//判断是否已经存在窗口
|
||
var WinBox = $(".PageBox[winId='" + this.WinId + "']");
|
||
if (WinBox.size() > 0) return;
|
||
this.Close();
|
||
//生成窗口
|
||
this.Mask();
|
||
this.BuildFrame();
|
||
this.BuildTitle();
|
||
this.BuildIFrame();
|
||
if (this.CloseEvent != null) {
|
||
var str = String(this.CloseEvent).replace(/[\r\n]/g, "").replace(/\{2,}/g, "");
|
||
str = str.replace(/'/g, "'").replace(/"/g, """);
|
||
this.WinBox.attr("closeevent", str);
|
||
}
|
||
//设置拖动
|
||
$(".PageBox").easydrag();
|
||
$(".PageBox").setHandler("PageBoxTitle");
|
||
//开始拖动
|
||
$(".PageBox").ondrag(function () {
|
||
$("#PageBoxIframeMask").show();
|
||
var frame = $("#PageBoxIframeTemp");
|
||
if (frame.size() > 0) {
|
||
frame.hide();
|
||
}
|
||
});
|
||
//停止拖动
|
||
$(".PageBox").ondrop(function () {
|
||
$("#PageBoxIframeMask").hide();
|
||
var frame = $("#PageBoxIframeTemp");
|
||
if (frame.size() > 0) {
|
||
var PageBox = $(".PageBox");
|
||
var offset = PageBox.offset();
|
||
frame.css("top", offset.top);
|
||
frame.css("left", offset.left);
|
||
frame.show();
|
||
}
|
||
});
|
||
//完成后触发事件
|
||
this.OnComplete();
|
||
}
|
||
//生成窗体外框
|
||
PageBox.prototype.BuildFrame = function () {
|
||
//屏幕的宽高
|
||
var hg = $(window).height();
|
||
var wd = $(window).width();
|
||
//
|
||
$("body").append("<div id=\"PageBox\" type=\"PageBox\" winId=\"" + this.WinId + "\"></div>");
|
||
var PageBox = $(".PageBox");
|
||
this.WinBox = PageBox;
|
||
var border = parseInt(PageBox.css("border-width")); //窗体边线宽度
|
||
border = !isNaN(border) ? border : 0;
|
||
//设置窗口的位置
|
||
PageBox.css("top", (hg - this.Height) / 2 - border);
|
||
PageBox.css("left", (wd - this.Width) / 2 - border);
|
||
PageBox.css("position", "absolute");
|
||
PageBox.css("z-index", "20001");
|
||
PageBox.css("width", this.Width);
|
||
PageBox.css("height", this.Height);
|
||
}
|
||
//生成标题栏
|
||
PageBox.prototype.BuildTitle = function () {
|
||
var box = this.WinBox;
|
||
box.append("<div id=\"PageBoxTitle\"></div>");
|
||
var titbox = $("#PageBoxTitle");
|
||
var tm = "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
|
||
tm += "<tr>";
|
||
//tm+="<td width=\"25\" > </td>"
|
||
tm += "<td ><div id=\"PageBoxTitleTxt\">" + this.Title + "</div></td>";
|
||
tm += "<td width=\"15\" align=\"center\">";
|
||
tm += "<a id=\"PageBoxTitleClose\" href=\"#\"><img src=\"/manage/images/winClose.gif\"/></a></td>";
|
||
tm += "</tr></table>"
|
||
titbox.append(tm);
|
||
//关闭按钮
|
||
$("#PageBoxTitleClose").click(function () {
|
||
var box = $(this).parents("div[type=PageBox]");
|
||
var winid = box.attr("winid");
|
||
PageBox.Close(winid);
|
||
return false;
|
||
});
|
||
}
|
||
//生成页面frame区域
|
||
PageBox.prototype.BuildIFrame = function () {
|
||
var box = this.WinBox;
|
||
var width = box.width();
|
||
//标题栏的高度
|
||
var titHg = $("#PageBoxTitle").outerHeight();
|
||
var height = box.height() - titHg;
|
||
var frame = "";
|
||
frame += "<iframe src=\"" + this.Page + "\" name=\"PageBoxIframe\" id=\"PageBoxIframe\" ";
|
||
frame += "width=\"" + width + "\"";
|
||
frame += "height=\"" + height + "\"";
|
||
frame += "marginwidth=\"0\" marginheight=\"0\" align=\"top\" scrolling=\"auto\"";
|
||
//frame+="frameborder=\"0\" allowtransparency=\"false\">";
|
||
frame += "frameborder=\"0\" >";
|
||
frame += "</iframe>";
|
||
box.append(frame);
|
||
//生成iframe上面的覆盖
|
||
box.append("<div id=\"PageBoxIframeMask\"></div>");
|
||
var mask = $("#PageBoxIframeMask");
|
||
mask.width(box.width());
|
||
mask.height(height);
|
||
mask.css({
|
||
position: "absolute",
|
||
left: "0px",
|
||
top: titHg
|
||
});
|
||
var alpha = 60;
|
||
mask.css("background-color", "#ffffff");
|
||
mask.css("filter", "Alpha(Opacity=" + alpha + ")");
|
||
mask.css("display", "block");
|
||
mask.css("-moz-opacity", alpha / 100);
|
||
mask.css("opacity", alpha / 100);
|
||
mask.fadeIn("slow");
|
||
mask.hide();
|
||
}
|
||
//关闭窗口
|
||
PageBox.prototype.Close = function (winid) { //清除窗口
|
||
PageBox.Close(winid);
|
||
}
|
||
PageBox.Close = function (winid) {
|
||
if (winid == null) {
|
||
$(".PageBox").remove();
|
||
} else {
|
||
var WinBox = $(".PageBox[winid='" + winid + "']");
|
||
if (WinBox.size() > 0) {
|
||
WinBox.remove();
|
||
}
|
||
//窗口关闭后的事件
|
||
var func = WinBox.attr("closeevent");
|
||
if (func != null && func != "") {
|
||
func = func.replace(/\'/g, "'").replace(/\"/g, "\"");
|
||
var event = eval("(" + func + ")");
|
||
event();
|
||
}
|
||
}
|
||
$("#screenMask").fadeOut(200, function () {
|
||
$("#screenMask").remove();
|
||
});
|
||
}
|
||
//隐藏关闭按钮
|
||
PageBox.prototype.HideClose = function () {
|
||
$("#PageBoxTitleClose").hide();
|
||
}
|
||
//关闭窗口并刷新当前打开的页面
|
||
PageBox.prototype.CloseAndRefresh = function () { //清除窗口
|
||
this.Close();
|
||
try {
|
||
//当前处于焦点的面板
|
||
var focusId = new parent.PagePanel().focus();
|
||
var frame = $("#consFame_" + focusId);
|
||
//刷新界面
|
||
var src = frame[0].contentWindow.location.href;
|
||
frame.attr("src", src);
|
||
} catch (err) {
|
||
history.go(0);
|
||
}
|
||
}
|
||
//生成遮罩层
|
||
PageBox.prototype.Mask = function () {
|
||
$("body").append("<div id=\"screenMask\"/>");
|
||
var mask = $("#screenMask");
|
||
//屏幕的宽高
|
||
var hg = document.documentElement.clientHeight;
|
||
var wd = document.documentElement.clientWidth;
|
||
mask.css({ "position": "absolute", "z-index": "10000",
|
||
"width": wd, "height": hg, top: 0, left: 0
|
||
});
|
||
var alpha = 60;
|
||
mask.css({ "background-color": "#999", "filter": "Alpha(Opacity=" + alpha + ")",
|
||
"display": "block", "-moz-opacity": alpha / 100, "opacity": alpha / 100
|
||
});
|
||
mask.fadeIn("slow");
|
||
}
|
||
//当浏览器窗口变化时
|
||
PageBox.prototype.OnReSize = function () {
|
||
var box = $(".PageBox");
|
||
if (box.size() < 1) return;
|
||
//重新设置遮罩
|
||
this.Mask();
|
||
//屏幕的宽高
|
||
//窗体的内容宽高
|
||
var hg = document.documentElement.clientHeight;
|
||
var wd = document.documentElement.clientWidth;
|
||
//设置窗口的位置
|
||
box.css("top", (hg - box.height()) / 2);
|
||
box.css("left", (wd - box.width()) / 2);
|
||
|
||
}
|
||
//当完成后,触发事件
|
||
PageBox.prototype.OnComplete = function () {
|
||
var num = 50;
|
||
var p = $(".PageBox");
|
||
//谈入效果
|
||
p.hide();
|
||
p.fadeIn();
|
||
} |