📄 popup.js
字号:
//Popup窗口类
function ETSOOPopup(strTarget,numWidth,numHeight,numLeft,numTop,numAdjustWidth,numAdjustHeight){
if(strTarget==null)strTarget="ETSOOPopupFrame";
if(numWidth==null)numWidth=150;
if(numHeight==null)numHeight=300;
if(numAdjustWidth==null)numAdjustWidth=0;
if(numAdjustHeight==null)numAdjustHeight=0;
this.Target=strTarget; //目标窗口,必须定义名称和id为同一名称
this.Width=numWidth; //宽度
this.Height=numHeight; //高度
this.AdjustWidth=numAdjustWidth; //调整宽度
this.AdjustHeight=numAdjustHeight; //调整高度
this.Left=numLeft;
this.SourceObject=null; //源对象
this.Top=numTop;
this.Direction=0; //向下,1为向上
this.Content=""; //Body中的内容
this.Hold=1; //是否保持
this.Keep=0; //是否保持焦点
this.URL=""; //起用网址
this.URLContent=""; //起用网址内容
this.Skin=null; //皮肤
this.ShowBar=true; //显示Bar
this.Path=""; //相对路径
this.BgColor=""; //背景颜色,为空时不指定
this.Popup=(window.createPopup&&document.implementation); //是否显示为Popup
}
//获取中间位置
ETSOOPopup._GetCenter=function(numWidth,numHeight,numTopUp){
var numLeft=(window.screen.width-numWidth)/2;
var numTop=(window.screen.height-numHeight)/2-numTopUp;
return [numLeft,numTop];
}
//显示窗口
ETSOOPopup.prototype.Show=function(numType){
var numHold=this.Hold;
ETSOOPopup.Hold=numHold;
var numKeep=this.Keep;
ETSOOPopup.Keep=numKeep;
var strSkin=this.Skin;
ETSOOPopup.Skin=strSkin;
var numLeft=this.Left;
var numTop=this.Top;
var numWidth=this.Width;
var numHeight=this.Height;
var numAdjustWidth=this.AdjustWidth;
var numAdjustHeight=this.AdjustHeight;
var arrCenters=ETSOOPopup._GetCenter(numWidth,numHeight,100);
var blnPopup=this.Popup;
if(numLeft==null){
numLeft=arrCenters[0];
}
if(numTop==null){
numTop=arrCenters[1];
}
var numBodyWidth=document.body.clientWidth+document.body.scrollLeft;
var numBodyHeight=document.body.clientHeight+document.body.scrollTop;
if(numLeft+numWidth>numBodyWidth)numLeft=numLeft-numWidth+numAdjustWidth;
if(numTop+numHeight>numBodyHeight)numTop=numTop-numHeight-numAdjustHeight;
if(numLeft<0)numLeft=0;
if(numTop<0)numTop=0;
var strContent=this.Content;
var strBgColor=this.BgColor;
if(strBgColor=="")strBgColor="#FFFFFF";
var strPage='<html><head>';
strPage+='<style type="text/css">';
strPage+='.ColorBlock{cursor:pointer;border:1px solid '+strBgColor+';cursor:hand;}';
strPage+='</style>';
strPage+='<link rel="stylesheet" href="'+strSkin+'">';
strPage+='</head><body';
if(!blnPopup)strPage+=' oncontextmenu="return false" onmouseout="parent.ETSOOPopup.HideHoldFrame()"';
if(numType==null)strPage+=' scroll="no"';
if(strBgColor)strPage+=' bgcolor="'+strBgColor+'"';
strPage+='><table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0"><tr>';
if(this.ShowBar)strPage+='<td class="Bar" width="20"></td>';
strPage+='<td valign="top" style="padding:1px"><table border="0" width="100%"cellspacing="0" cellpadding="0">';
strPage+=strContent;
strPage+='</table></td></tr></table></div>';
strPage+='</body></html>';
ETSOOPopup.ActiveOne=this;
if(blnPopup){
numLeft-=document.body.scrollLeft;
numTop-=document.body.scrollTop;
var objWin=window.createPopup();
this.FrameWindow=objWin;
with(objWin.document){
open();
write(strPage);
close();
}
objWin.show(numLeft,numTop,numWidth,numHeight,document.body);
}else{
var strTarget=this.Target;
var objFrameDoc=document.getElementById(strTarget);
if(objFrameDoc==null){
var objSpan=document.createElement("span");
objSpan.innerHTML='<iframe scrolling="no" id="ETSOOPopupFrame" name="ETSOOPopupFrame" marginwidth="0" marginheight="0" border="0" frameborder="0" style="display:none;"></iframe>';
objSpan=document.body.appendChild(objSpan);
objFrameDoc=objSpan.firstChild;
}
var objFrameWin=window.frames[strTarget];
this.FrameWindow=objFrameWin;
if(objFrameDoc.style.display!="none")return false;
this.FrameDocument=objFrameDoc;
ETSOOPopup.Target=strTarget;
var strUrl=this.URL;
if(strUrl==""){
with(objFrameWin.document){
open();
write(strPage);
close();
}
}else{
this.URLContent=strPage;
objFrameWin.location=strUrl;
}
with(objFrameDoc.style){
position="absolute";
zIndex=10000;
left=numLeft+"px";
top=numTop+"px";
width=numWidth+"px";
height=numHeight+"px";
if(strUrl=="")display="block";
}
}
}
//是否在亿速编辑器环境,不在,定一个空对象。
if(typeof(ETSOOEditor)=="undefined")ETSOOEditor=function(){};
//定义基础颜色
ETSOOPopup.prototype.BasicColors=[
'#000000','#FFFFFF','#008000','#800000','#808000','#000080','#800080','#808080',
'#FFFF00','#00FF00','#00FFFF','#FF00FF','#C0C0C0','#FF0000','#0000FF','#008080'
];
//处理函数名,自动传递两个参数strColor和strSourceId
ETSOOPopup.prototype.DoFunction=null;
//对象唯一id;
ETSOOPopup.prototype.SourceId="";
//默认颜色
ETSOOPopup.prototype.DefaultColor="#000000";
//获取调整了的高度
function ETSOOGetAdjustHeight(numH){
var strApp=navigator.appMinorVersion;
if(strApp&&(strApp.indexOf("SP2")!=-1||strApp.indexOf("SP1")!=-1))numH+=24;
return numH;
}
//显示颜色窗口
ETSOOPopup.prototype.ShowColorPallette=function(langDefault,langMore,strLanguage,strCharset){
if(langDefault==null)langDefault="Default";
if(langMore==null)langMore="More...";
var strFun=this.DoFunction;
var strId=this.SourceId;
var strDefaultColor=this.DefaultColor;
var strPallette='';
strPallette+='<tr><td id="IdPad" onmouseover="this.className=\'PalletteHover\'" onmouseout="this.className=\'ColorBlock\'" onclick="parent.'+strFun+'(\''+strDefaultColor+'\',\''+strId+'\');parent.ETSOOPopup.HideFrame(1)" class="ColorBlock">';
strPallette+='<table width="100%" class="PalletteDefault"><tr><td width="20px"><div class="PallettePart" style="background-color:'+strDefaultColor+'"></div></td><td align="center" valign="middle">'+langDefault+'</td></tr></table></td></tr>';
strPallette+='<tr><td><table width="100%"><tr>';
var arrBasicColors=this.BasicColors;
var numLen=arrBasicColors.length;
for(var numI=0;numI<numLen;numI++){
if(numI>0&&numI%8==0)strPallette+='</tr><tr>';
var strColor=arrBasicColors[numI];
strPallette+='<td id="IdPad" onmouseover="this.className=\'PalletteHover\'" onmouseout="this.className=\'ColorBlock\'" onclick="parent.'+strFun+'(\''+strColor+'\',\''+strId+'\');parent.ETSOOPopup.HideFrame(1)" class="ColorBlock"><div class="PallettePart" style="background-color:'+strColor+'"></div></td>';
}
strPallette+='</tr></table></td></tr>';
strPallette+='<tr><td id="IdPad" onmouseover="this.className=\'PalletteHover\'" onmouseout="this.className=\'ColorBlock\'" onclick="parent.ETSOOPopup.ShowMoreColor()" class="ColorBlock"><table width="100%"><tr><td align="center" valign="middle">'+langMore+'</td></tr></table></td></tr>';
this.Content=strPallette;
this.ShowBar=false;
var numWidth=230,numHeight=131;
if(window.Node){
numWidth=248,numHeight=133;
}
var numAdjustWidth=this.AdjustWidth;
var numAdjustHeight=this.AdjustHeight;
numWidth+=numAdjustWidth;
numHeight+=numAdjustHeight;
this.Width=numWidth;
this.Height=numHeight;
this.Show();
//如果编辑器为空对象,模拟实际对象,需要Utility.js支持
if(ETSOOEditor.ActiveField==null){
if(strLanguage==null)strLanguage="zh-cn";
if(strCharset==null)strCharset="gb2312";
var objScript=document.getElementsByTagName("script")[0];
var objNew=document.createElement("script");
objNew.src=this.Path+"Languages/"+strLanguage+"/System.js";
objScript.parentNode.insertBefore(objNew,objScript);
ETSOOEditor._GetCharset=function(){return strCharset};
ETSOOEditor.GetObj=function(strId){return null};
ETSOOEditor._GetEventObj=function(objEvent){return ETSOOGetEventObj(objEvent)};
ETSOOEditor.Browser=ETSOOGetBrowserVersion();
ETSOOEditor.ActiveField=function(){};
ETSOOEditor.ActiveField.Skin="System";
ETSOOEditor.ActiveField.BgColor=this.BgColor;
ETSOOEditor.ActiveField.Language=strLanguage;
window.ETSOOEditor=ETSOOEditor;
}
}
//显示更多颜色
ETSOOPopup.ShowMoreColor=function(){
var objOne=ETSOOPopup.ActiveOne;
if(objOne){
ETSOOPopup.HideFrame(1);
var numW=600;
var numH=280;
numH=ETSOOGetAdjustHeight(numH);
var strUrl=objOne.Path+"Dialogs/Color.htm";
var arrArgs=[self,objOne];
ETSOOPopup.Open(strUrl,arrArgs,numW,numH,1);
}
}
//隐藏窗口
ETSOOPopup.HideFrame=function(numForce){
var objOne=ETSOOPopup.ActiveOne;
if(objOne){
if(objOne.Popup){
objOne.FrameWindow.hide();
ETSOOPopup.ActiveOne=null;
}
else{
var objFrameDoc=objOne.FrameDocument;
if(objFrameDoc&&objFrameDoc.style.display!="none"&&(ETSOOPopup.Keep==0||numForce==1)){
objFrameDoc.style.display="none";
ETSOOPopup.ActiveOne=null;
}
}
}
}
//隐藏浮动窗口
ETSOOPopup.HideHoldFrame=function(){
if(ETSOOPopup.Hold==0){
ETSOOPopup.HideFrame();
ETSOOPopup.ActiveOne=null;
}
}
//定义事件
ETSOOPopup.AddEvent=function(strTarget){
ETSOOPopup._SetAddEvent(window);
var numLen=window.frames.length;
for(var numI=0;numI<numLen;numI++){
var objWin=window.frames[numI];
if(objWin.name!=strTarget)ETSOOPopup._SetAddEvent(objWin);
}
}
ETSOOPopup._SetAddEvent=function(objWin){
if(navigator.language==null){
objWin.document.attachEvent("onmousedown",ETSOOPopup.HideFrame);
}else{
objWin.addEventListener('mousedown',ETSOOPopup.HideFrame,true);
}
}
//全局变量
ETSOOPopup.Target="ETSOOPopupFrame";
ETSOOPopup.ActiveOne=null;
ETSOOPopup.Hold=1;
ETSOOPopup.Keep=0;
ETSOOPopup.Skin=null;
ETSOOPopup.Dragging=0;
ETSOOPopup.DragPos=[];
//辅助函数
ETSOOPopup.BarMouseDown=function(objEvent){
ETSOOPopup.Dragging=1;
ETSOOPopup.DragPos=[objEvent.clientX,objEvent.clientY];
}
ETSOOPopup.BarMouseMove=function(objEvent){
if(ETSOOPopup.Dragging==1){
var objActiveOne=ETSOOPopup.ActiveOne;
if(objActiveOne){
var objDoc=objActiveOne.FrameDocument;
var numLeft=parseInt(objDoc.style.left);
var numTop=parseInt(objDoc.style.top);
var numNewX=objEvent.clientX;
var numNewY=objEvent.clientY;
var numBaseX=ETSOOPopup.DragPos[0];
var numBaseY=ETSOOPopup.DragPos[1];
var numNewLeft=numLeft+numNewX-numBaseX;
if(numNewLeft<0)numNewLeft=0;
var numNewTop=numTop+numNewY-numBaseY;
if(numNewTop<0)numNewTop=0;
with(objDoc.style){
left=numNewLeft+"px";
top=numNewTop+"px";
}
ETSOOPopup.DragPos[numNewX,numNewY];
}
}
}
ETSOOPopup.BarMouseUp=function(objEvent){
ETSOOPopup.BarMouseMove(objEvent);
ETSOOPopup.Dragging=0;
ETSOOPopup.DragPos=[];
}
ETSOOPopup.BarMouseOut=function(objEvent){
ETSOOPopup.BarMouseUp(objEvent);
}
ETSOOPopup.SetDragable=function(objE){
if(navigator.language==null){
objE.attachEvent("onmousedown",ETSOOPopup.BarMouseDown);
objE.attachEvent("onmousemove",ETSOOPopup.BarMouseMove);
objE.attachEvent("onmouseout",ETSOOPopup.BarMouseOut);
objE.attachEvent("onmouseup",ETSOOPopup.BarMouseUp);
}else{
objE.addEventListener('mousedown',ETSOOPopup.BarMouseDown,true);
objE.addEventListener('mousemove',ETSOOPopup.BarMouseMove,true);
objE.addEventListener('mouseup',ETSOOPopup.BarMouseUp,true);
objE.addEventListener('mouseout',ETSOOPopup.BarMouseOut,true);
}
}
ETSOOPopup.Open=function(strUrl,arrArgs,numWidth,numHeight,numType,arrControl){
var arrCenters=ETSOOPopup._GetCenter(numWidth,numHeight,100);
if(arrControl==null)arrControl=["no","no"];
var strWinArgs="left="+arrCenters[0]+",top="+arrCenters[1]+",width="+numWidth+",height="+numHeight+",resizable="+arrControl[0]+",scrollbars="+arrControl[1]+",status=no";
var strDialogArgs="scrollbars="+arrControl[1]+",center=yes;dialogHeight="+numHeight+"px;dialogWidth="+numWidth+"px;help=no;status=no;resizable="+arrControl[0];
var objWin;
if(window.Node||numType==-1){
objWin=window.open("","",strWinArgs);
}else{
if(numType==1)showModalDialog(strUrl,arrArgs,strDialogArgs);
else showModelessDialog(strUrl,arrArgs,strDialogArgs);
}
if(objWin){
if(objWin.opener==null)objWin.opener=self;
objWin.dialogArguments=arrArgs;
window.ETSOOArgumentsSaved=arrArgs;
if(window.Node){
if(strUrl.indexOf("http://")!=0&&strUrl.indexOf("/")==0)strUrl="http://"+document.domain+(document.location.port==""?"":":"+document.location.port)+"/"+strUrl;
}
objWin.location.href=strUrl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -