项目中需要用到在Portal浏览器门户窗口中使用多个Sheet页(类似Excel下面的Sheet)的功能,找了一个JS代码,基本效果都能实现了。美中不足的就是当打开的Sheet页个数达到显示器宽度时候,就会出现折行错位并提示“您打开了太多的窗口,可能导致页面局部变形。建议关闭一部分窗口”信息,必须手工关闭一个Sheet窗口才能恢复正常。
如下所示红色位置,目前是通过判断表格的高度超过设定值时弹出警告信息。理想的实现效果是,在创建新Sheet窗口前能够先判断一下如果创建了此Sheet窗口是否会超出表格高度,如果会超出则不创建并弹出警告信息。如果这个想法很难实现,也可以判断Sheet的固定数量也行,或者有其它更好的方法。希望有JS高手能够帮忙在下面代码基础上修改下,谢谢了。
function HTabControl(tabSkinId,isShowCloseBtn)
{
//this.tabSkinId = tabSkinId;
_isShowCloseBtn = isShowCloseBtn;
_stylePath = _path + "Skin/Tab"+ tabSkinId +"/";
this.init = function()
{
loadStyle(this.tabSkinId,"tab.css");
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='rightMenuItem2' onclick='fullOpen(_curentUrl)'>全屏打开</td></tr>"+
"<tr><td class='rightMenuItem3' 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');
}
}
已 解决