|
|
// 创建新的DIV图层
|
|
|
document.write('<DIV id="PendingMessage" class="Load"> </DIV>');
|
|
|
function onreadystatechange() {
|
|
|
if (document.readyState == "complete") {
|
|
|
HiddenLoading();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 显示上面创建的DIV图层
|
|
|
function ShowLoading() {
|
|
|
$('PendingMessage').style.display = "block";
|
|
|
}
|
|
|
|
|
|
// 隐藏上面创建的DIV图层
|
|
|
function HiddenLoading() {
|
|
|
$('PendingMessage').style.display = "none";
|
|
|
}
|
|
|
|
|
|
// 图片所在的路径
|
|
|
var _stylePath = null
|
|
|
// 当前框架的ID
|
|
|
var _curentFrame = null;
|
|
|
// 当前框架的地址
|
|
|
var _curentUrl = null;
|
|
|
// 是否显示关闭按钮
|
|
|
var _isShowCloseBtn = null;
|
|
|
|
|
|
/*-------------------------------------------------------------------------------
|
|
|
功能:类似winForm的基于javascript的TabControl效果
|
|
|
参数:str:消息体
|
|
|
调用方法
|
|
|
var myTab = new HTabControl(_skinId,true);
|
|
|
document.write(myTab.init());
|
|
|
|
|
|
不刷新
|
|
|
top.myTab.Cts('标题','default1.aspx')
|
|
|
刷新
|
|
|
top.myTab.Cts('标题','default1.aspx',true)
|
|
|
-------------------------------------------------------------------------------*/
|
|
|
|
|
|
function HTabControl(tabSkinId, isShowCloseBtn) {
|
|
|
//this.tabSkinId = tabSkinId;
|
|
|
_isShowCloseBtn = isShowCloseBtn;
|
|
|
// 获取tabID对应的tab目录
|
|
|
_stylePath = _path + "Skin/Tab" + tabSkinId + "/";
|
|
|
|
|
|
this.init = function() {
|
|
|
// 读取tabID对应的tab.css
|
|
|
loadStyle(this.tabSkinId, "tab.css");
|
|
|
// 设置新的DIV图层
|
|
|
return "<div id='tabContextMenu' class='ContextMenu' onclick='HiddenDiv(this.id)'>"
|
|
|
+ "<table border='0' cellpadding='0' cellspacing='0'>"
|
|
|
+ "<tr><td class='rightMenuItem1' onclick='window.open(_curentUrl)'>新开</td></tr>"
|
|
|
+ "<tr><td class='rightMenuItem3' onclick='fullOpen(_curentUrl)'>全屏打开</td></tr>"
|
|
|
+ "<tr><td class='rightMenuItem2' onclick=GetIframe('F_'+_curentFrame).document.location.reload();>刷新</td></tr> "
|
|
|
+ "</table>"
|
|
|
+ "</div>"
|
|
|
+ "<table width='100%' height='100%' border='0' cellspacing='0' cellpadding='0'>"
|
|
|
+ "<tr>"
|
|
|
+ "<td style='height:21px' valign='bottom'>"
|
|
|
+ "<table height='100%' id='tabFrameTitle' border='0' cellspacing='0' cellpadding='0'>"
|
|
|
+ "<tr>"
|
|
|
+ "<td valign='bottom'></td>"
|
|
|
+ "</tr>"
|
|
|
+ "</table>"
|
|
|
+ "</td>"
|
|
|
+ "</tr>"
|
|
|
+ "<tr>"
|
|
|
+ "<td class='tabpage' valign='top' id='tdFramePane'></td>"
|
|
|
+ "</tr>" + "</table>";
|
|
|
}
|
|
|
|
|
|
//如果不存在页面就创建,如果存在就聚焦
|
|
|
this.Cts = function(title, url, isRef) {
|
|
|
var objTitle = $("tabFrameTitle");
|
|
|
var objIframe = $("tdFramePane");
|
|
|
|
|
|
//如果没有该页建立该页
|
|
|
if (!$(title)) {
|
|
|
ShowLoading();
|
|
|
CreateTitle(objTitle, title);
|
|
|
if (isRef == true) {
|
|
|
CreateIframe(objIframe, title, 'auto');
|
|
|
} else {
|
|
|
CreateIframe(objIframe, title, 'auto', url);
|
|
|
}
|
|
|
|
|
|
if (objTitle.offsetHeight > 25) {
|
|
|
alert("您打开了太多的窗口,可能导致页面局部变形。建议关闭一部分窗口");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//聚焦到该页
|
|
|
FoucsPage(title, url, isRef);
|
|
|
CollectGarbage(); //清理浏览器内存
|
|
|
_curentUrl = url;
|
|
|
HiddenDiv('tabContextMenu');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 读取皮肤的id和样式表css的名称
|
|
|
function loadStyle(skinId, cssName) {
|
|
|
var head = document.getElementsByTagName('head').item(0);
|
|
|
css = document.createElement('link');
|
|
|
css.href = _stylePath + cssName;
|
|
|
css.rel = 'stylesheet';
|
|
|
css.type = 'text/css';
|
|
|
css.id = 'loadCss';
|
|
|
head.appendChild(css);
|
|
|
}
|
|
|
|
|
|
//------------------------------主框架的TabControl效果-------------------------------
|
|
|
|
|
|
// 添加标题
|
|
|
function CreateTitle(obj, title) {
|
|
|
|
|
|
// 建立一个一行三列的表格用于tab的标题头
|
|
|
var titleTable = document.createElement("table");
|
|
|
titleTable.setAttribute("border", "0");
|
|
|
titleTable.setAttribute("cellPadding", "0");
|
|
|
titleTable.setAttribute("cellSpacing", "0");
|
|
|
|
|
|
var titleBody = document.createElement("tbody");
|
|
|
|
|
|
var titleRow = document.createElement("tr");
|
|
|
|
|
|
// 建立第一列
|
|
|
var tdLeft = document.createElement("td");
|
|
|
tdLeft.className = "tabTitleFoucs_l";
|
|
|
|
|
|
// 建立第二列
|
|
|
// 作为标题显示
|
|
|
var tdMid = document.createElement("td");
|
|
|
tdMid.innerHTML = title;
|
|
|
tdMid.className = "tabTitleFoucs_m";
|
|
|
tdMid.title = "双击刷新该页";
|
|
|
tdMid.onselectstart = function() {
|
|
|
return false
|
|
|
};
|
|
|
tdMid.oncontextmenu = function() {
|
|
|
e = window.event || e;
|
|
|
e = e.srcElement || e.target;
|
|
|
if ("It_" + _curentFrame != e.parentElement.parentElement.parentElement.id)
|
|
|
return false;
|
|
|
obj = $("tabContextMenu");
|
|
|
with (obj) {
|
|
|
style.pixelLeft = event.x - 3;
|
|
|
style.pixelTop = event.y - 3;
|
|
|
style.visibility = "visible";
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 建立第三列
|
|
|
// 作为关闭按纽的容器
|
|
|
var tdClose = document.createElement("td");
|
|
|
tdClose.className = "tabTitleFoucs_m";
|
|
|
tdClose.style.width = "11px";
|
|
|
|
|
|
// 建立关闭按纽
|
|
|
if (_isShowCloseBtn) {
|
|
|
CreateCloseBtn(tdClose, title);
|
|
|
}
|
|
|
|
|
|
// 建立第四列
|
|
|
var tdRight = document.createElement("td");
|
|
|
tdRight.className = "tabTitleFoucs_r";
|
|
|
|
|
|
// 把列加到行
|
|
|
titleRow.appendChild(tdLeft);
|
|
|
titleRow.appendChild(tdMid);
|
|
|
titleRow.appendChild(tdClose);
|
|
|
titleRow.appendChild(tdRight);
|
|
|
|
|
|
// 把行加到tbody
|
|
|
titleBody.appendChild(titleRow);
|
|
|
|
|
|
// 把tbody加到表格
|
|
|
titleTable.appendChild(titleBody);
|
|
|
titleTable.id = "It_" + title;
|
|
|
titleTable.onclick = function() {
|
|
|
FoucsPage(title);
|
|
|
|
|
|
};
|
|
|
titleTable.ondblclick = function() {
|
|
|
GetIframe("F_" + _curentFrame).document.location.reload();
|
|
|
}
|
|
|
|
|
|
// 在主表格上建立一个列
|
|
|
var mainTd = document.createElement("td");
|
|
|
mainTd.id = title;
|
|
|
mainTd.setAttribute("height", "21");
|
|
|
mainTd.appendChild(titleTable);
|
|
|
|
|
|
// 把列加到主表格
|
|
|
obj.rows[0].appendChild(mainTd);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 创建新的Iframe
|
|
|
function CreateIframe(obj, title, canScoll, url) {
|
|
|
var iFrame = document.createElement("iframe");
|
|
|
iFrame.id = "F_" + title;
|
|
|
iFrame.name = "F_" + title;
|
|
|
if (url != null)
|
|
|
iFrame.src = url;
|
|
|
iFrame.frameBorder = "0";
|
|
|
iFrame.scrolling = canScoll;
|
|
|
iFrame.className = "Frame";
|
|
|
iFrame.style.width = "100%";
|
|
|
iFrame.style.height = "100%";
|
|
|
iFrame.onreadystatechange = function() {
|
|
|
if (iFrame.document.readyState == "complete") {
|
|
|
HiddenLoading();
|
|
|
}
|
|
|
}
|
|
|
obj.appendChild(iFrame);
|
|
|
GetIframe("F_" + title).window.document.onclick = function() {
|
|
|
HiddenDiv('tabContextMenu');
|
|
|
}
|
|
|
// GetIframe("F_"+title).window.document.onreadystatechange = function()
|
|
|
// {
|
|
|
// if(GetIframe("F_"+title).window.document.readyState == "complete")
|
|
|
// {
|
|
|
// HiddenLoading();
|
|
|
// }
|
|
|
// }
|
|
|
}
|
|
|
|
|
|
// 获取Iframe
|
|
|
function GetIframe(id) {
|
|
|
return document.frames[id];
|
|
|
}
|
|
|
|
|
|
// 创建关闭按纽
|
|
|
function CreateCloseBtn(parent, id) {
|
|
|
var closeBtn = new Image();
|
|
|
closeBtn.id = "btn" + id;
|
|
|
closeBtn.src = _stylePath + "tab_close.jpg";
|
|
|
closeBtn.style.cursor = "pointer";
|
|
|
closeBtn.onclick = function() {
|
|
|
if (FindOtherFrameId(id) != null) {
|
|
|
FoucsPage(FindOtherFrameId(id));
|
|
|
CloseTitle(id);
|
|
|
CloseIframe("F_" + id);
|
|
|
HiddenLoading();
|
|
|
} else {
|
|
|
alert("必须保留一个标签");
|
|
|
}
|
|
|
}
|
|
|
parent.appendChild(closeBtn);
|
|
|
}
|
|
|
|
|
|
function CloseCurPage() {
|
|
|
$("btn" + _curentFrame).click();
|
|
|
CollectGarbage();
|
|
|
}
|
|
|
|
|
|
// 找“相邻”标题所对应的框架的Id
|
|
|
function FindOtherFrameId(id) {
|
|
|
var lastIframeId = null;
|
|
|
var objTitle = $("tabFrameTitle");
|
|
|
var cellCount = objTitle.rows[0].cells.length;
|
|
|
var currentCellIndex = 0;
|
|
|
for (var i = 0; i < cellCount; ++i) {
|
|
|
if (objTitle.rows[0].cells[i].id == id) {
|
|
|
currentCellIndex = i;
|
|
|
}
|
|
|
}
|
|
|
if (cellCount == 2) {
|
|
|
return null;
|
|
|
}
|
|
|
if (currentCellIndex == 1 && currentCellIndex + 1 <= cellCount) {
|
|
|
lastIframeId = objTitle.rows[0].cells[currentCellIndex + 1].id;
|
|
|
} else {
|
|
|
lastIframeId = objTitle.rows[0].cells[currentCellIndex - 1].id;
|
|
|
}
|
|
|
if (lastIframeId == "")
|
|
|
lastIframeId = null;
|
|
|
return lastIframeId;
|
|
|
}
|
|
|
|
|
|
// 关闭标题
|
|
|
function CloseTitle(id) {
|
|
|
if (id != null) {
|
|
|
var objTitle = $("tabFrameTitle");
|
|
|
for (var i = 0; i < objTitle.rows[0].cells.length; ++i) {
|
|
|
if (objTitle.rows[0].cells[i].id == id) {
|
|
|
if (GetBrowser() == "IE") {
|
|
|
objTitle.rows[0].cells[i].removeNode(true);
|
|
|
} else {
|
|
|
node = objTitle.rows[0].cells[i];
|
|
|
node.parentNode.removeChild(node);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 关闭框架
|
|
|
function CloseIframe(id) {
|
|
|
if (GetBrowser() == "IE") {
|
|
|
var obj = $(id);
|
|
|
obj.removeNode(true)
|
|
|
} else {
|
|
|
node = $(id);
|
|
|
node.parentNode.removeChild(node);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 聚焦到对应的标题
|
|
|
function FoucsPage(id, url, isRef) {
|
|
|
if (id == null) {
|
|
|
_curentFrame = null;
|
|
|
return;
|
|
|
}
|
|
|
if (_curentFrame == id)
|
|
|
return;
|
|
|
_curentFrame = id;
|
|
|
ShowTitle(id);
|
|
|
ShowIframe(id, url, isRef);
|
|
|
}
|
|
|
|
|
|
// 显示标题及相关样式
|
|
|
function ShowTitle(id) {
|
|
|
var objTitle = $("tabFrameTitle");
|
|
|
for (var i = 0; i < objTitle.rows[0].cells.length; ++i) {
|
|
|
curId = objTitle.rows[0].cells[i].id;
|
|
|
if (curId != "") {
|
|
|
$("It_" + curId).rows[0].cells[0].className = "tabTitleUnFoucs_l";
|
|
|
$("It_" + curId).rows[0].cells[1].className = "tabTitleUnFoucs_m";
|
|
|
$("It_" + curId).rows[0].cells[2].className = "tabTitleUnFoucs_m";
|
|
|
$("It_" + curId).rows[0].cells[3].className = "tabTitleUnFoucs_r";
|
|
|
}
|
|
|
}
|
|
|
$("It_" + id).rows[0].cells[0].className = "tabTitleFoucs_l";
|
|
|
$("It_" + id).rows[0].cells[1].className = "tabTitleFoucs_m";
|
|
|
$("It_" + id).rows[0].cells[2].className = "tabTitleFoucs_m";
|
|
|
$("It_" + id).rows[0].cells[3].className = "tabTitleFoucs_r";
|
|
|
}
|
|
|
|
|
|
// 显示指定的Iframe
|
|
|
function ShowIframe(id, url, isRef) {
|
|
|
var objIframe = $("tdFramePane");
|
|
|
for (i = 0; i < objIframe.childNodes.length; i++) {
|
|
|
if (objIframe.childNodes[i].id == "F_" + id) {
|
|
|
objIframe.childNodes[i].style.display = '';
|
|
|
if (isRef == true) {
|
|
|
objIframe.childNodes[i].src = url;
|
|
|
}
|
|
|
} else {
|
|
|
objIframe.childNodes[i].style.display = 'none';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 获取浏览器类型
|
|
|
function GetBrowser() {
|
|
|
if (document.all)
|
|
|
return "IE";
|
|
|
if (document.layers)
|
|
|
return "NS";
|
|
|
return "OTHER";
|
|
|
}
|