项目中需要用到在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');
}
}
{
//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');
}
}
解决方案 »
- jquery.tools.js图片滚动与jquery.lazyload.js图片延时加载
- 求一个jquery导航菜单效果
- createElement创建的文本框在表单提交的时候如何在JS验证
- js 如何判断用户输入的不含 `~!@#$%^&()-_=+]\\|:;\'<,>? 这些特殊字符
- ¥¥¥¥¥¥¥¥给父窗口付值问题¥¥¥¥¥¥¥¥¥¥
- 谁知道下载javascript实例书籍的网站啊?
- 怎么取到这个值????急。。。
- 如何实现一个文本 标题的颜色不断闪烁!急!
- 请问我要在<fram中的执行一个新的文件。请问如何实现。
- 走头无路,百思不得其解,只好象各位求助了
- JS如何使照片只显示居中部分的500*500像素,四周隐藏。
- ajax操作的时候,显示“正在加载中……”这个怎么弄?
{
alert("您打开了太多的窗口,可能导致页面局部变形。建议关闭一部分窗口");
}