📄 dhtmlxtabbar.js
字号:
var z=parseInt(tab.style[that._align])-tab._offsetSize;while (z<0)if (that._align=="left")z+=row._rowScroller.childNodes[0].onclick();else
z+=row._rowScroller.childNodes[1].onclick()};dhtmlXTabBar.prototype._scrollRight=function(){var that=this.parentNode.parentNode.parentNode.parentNode.tabbar;var row=this.parentNode.parentNode;if (row.tabCount-row.scrollIndex<2)return;if (!row.scrollIndex)row.scrollIndex=0;var shift=row.childNodes[row.scrollIndex]._offsetSize+that._margin*1;that._offset-=shift;that._redrawRow(row);row.scrollIndex++;return shift};dhtmlXTabBar.prototype._hideRowScroller = function(row){row._rowScroller.style.display='none'};dhtmlXTabBar.prototype.enableScroll = function(mode){this._edscr=(!convertStringToBoolean(mode));if(this._edscr)for (var i=0;i<this.rows.length;i++)this._hideRowScroller(this.rows[i])};dhtmlXTabBar.prototype._showRowScroller = function(row){if (this._edscr)return;if (!row._rowScroller._init)this._initScroller(row);row._rowScroller.style.display='block';if (this._vMode){if (this._align=="left")row._rowScroller.style.top=row.scrollTop-38+parseInt(this.height)+"px";else
row._rowScroller.style.top=row.scrollTop+4+"px";this._lineA.style.top=row.scrollLeft+"px"}else
{if (this._align=="left")row._rowScroller.style.left=row.scrollLeft-38+parseInt(this.width)+"px";else
row._rowScroller.style.left=row.scrollLeft+4+"px";this._lineA.style.left=row.scrollLeft+"px"}};dhtmlXTabBar.prototype._onMouseOverHandler=function(e)
{if (_isIE)var target = event.srcElement;else
var target = e.target;target=this.tabbar._getTabTarget(target);if (!target){this.tabbar._hideHover(target);return};this.tabbar._showHover(target);(e||event).cancelBubble=true};dhtmlXTabBar.prototype._onMouseOutHandler=function(e)
{this.parentNode.tabbar._hideHover(null);return};dhtmlXTabBar.prototype._onClickHandler=function(e)
{if (_isIE)var target = event.srcElement;else
var target = e.target;if (document.body.onclick)document.body.onclick(e);(e||event).cancelBubble=true;target=this.tabbar._getTabTarget(target);if (!target)return;this.tabbar._setTabActive(target);return false};dhtmlXTabBar.prototype._getTabTarget=function(t){while ((!t.className)||(t.className.indexOf("dhx_tab_element")==-1)){if ((t.className)&&(t.className.indexOf("dhx_tabbar_zone")!=-1)) return null;t=t.parentNode;if (!t)return null};return t};dhtmlXTabBar.prototype._redrawRow=function(row){var count=parseInt(this._offset);for (var i=0;i<row.tabCount;i++){if (row.childNodes[i].style.display=="none")continue;row.childNodes[i]._cInd=i;row.childNodes[i].style[this._align]=count+"px";count+=row.childNodes[i]._offsetSize+parseInt(this._margin)};if ((row.offsetWidth<count-parseInt(this._margin))||(parseInt(row.childNodes[0].style[this._align])<0))
this._showRowScroller(row);else
this._hideRowScroller(row)};dhtmlXTabBar.prototype.removeTab = function(tab,mode){var tab=this.tabsId[tab];if (!tab)return;if (this._content[tab.idd]){this._content[tab.idd].parentNode.removeChild(this._content[tab.idd]);this._content[tab.idd]=null};this._goToAny(tab,mode);var row=tab.parentNode;row.removeChild(tab);row.tabCount--;if ((row.tabCount==0)&&(this.rows.length>1))
this._removeRow(row);this.tabsId[tab.idd]=null;this._redrawRow(row)
this._setSizes()};dhtmlXTabBar.prototype._goToAny=function(tab,mode){if ((this._lastActive)==tab)
if (convertStringToBoolean(mode)) {if (null===this.goToPrevTab()) if (null===this.goToNextTab()) this._lastActive=null}else this._lastActive=null};dhtmlXTabBar.prototype.addTab = function(id, text, size, position, row){row=row||0;if (this.rows.length<=row)for (var i=this.rows.length;i<=row;i++)this._createRow();var z=this.rows[row].tabCount||0;if ((!position)&&(position!==0))
position=z;var nss=this._getTabStyle(id);var tab=this._createTab(text, size, this._TabCloseButton, nss);tab.idd=id;this.tabsId[id] = tab;var close = tab.childNodes[2].getElementsByTagName('img')[0];if (this._TabCloseButton && close){var self = this;close.onclick = function() {if ((!self.dhx_tab_close)||(self.dhx_tab_close(id))) self.removeTab(id, true)}};this.rows[row].insertBefore(tab,this.rows[row].childNodes[position]);var prevCount = this.rows[row].tabCount;this.rows[row].tabCount=z+1;if (size=="*")this.adjustTabSize(tab);if ( this._enableAutoRowAdd && this._checkSizes(this.rows[row])) {this.rows[row].tabCount = prevCount;delete this.tabsId[id];this.rows[row].removeChild(tab);row++;position = this.rows[row] ? this.rows[row].tabCount : 0;this.addTab(id, text, size, position, row);return};this._redrawRow(this.rows[row]);this._setSizes()};dhtmlXTabBar.prototype.enableAutoRow=function(mode){this._enableAutoRowAdd=convertStringToBoolean(mode)};dhtmlXTabBar.prototype.normalize=function(limit,full){limit=limit||this._tabZone.offsetWidth;var tabs=[];for (var j=0;j<this.rows.length;j++)for (var i=0;i<this.rows[j].tabCount;i++)tabs[tabs.length]=this.rows[j].removeChild(this.rows[j].childNodes[0]);this._tabZone.innerHTML="";this.rows=[];this._createRow();var row=0;var size=this._offset*1;var sizes=[];this.rows[row].tabCount=0;for (var i=0;i<tabs.length;i++)if ((size + tabs[i]._offsetSize + this._margin*1)< limit){this.rows[row].insertBefore(tabs[i],this.rows[row].childNodes[this.rows[row].tabCount]);this.rows[row].tabCount++
size+=tabs[i]._offsetSize + this._margin*1}else {sizes[row]=size;this._createRow();i--;row++;size=this._offset*1;this.rows[row].tabCount=0;continue};sizes[row]=size;if (full){for (var i=1;i<this.rows.length;i++)if (sizes[i]<sizes[0]){var tab=this.rows[i].childNodes[this.rows[i].tabCount-1];var size=tab._offsetSize+(sizes[0]-sizes[i]);this.adjustTabSize(tab,size)}};for (var i=0;i<this.rows.length;i++)this._redrawRow(this.rows[i]);this._setSizes()};dhtmlXTabBar.prototype._showHover=function(tab){if (tab._disabled)return;this._hideHover(tab);if (tab==this._lastActive)return;var nss=this._getTabStyle(tab.idd);switch (this._tbst){case "win_text":
tab._lChild.style.backgroundImage='url('+this._imgPath+this._mode+nss[6]+')';break};this._lastHower=tab};dhtmlXTabBar.prototype._getTabStyle=function(id){var nss=this._styles[this._cstyle];if (nss["id_"+id])nss=nss["id_"+id];return nss};dhtmlXTabBar.prototype.setCustomStyle=function(id,color,scolor,css){var nss=this._styles[this._cstyle];if (nss["id_"+id])nss=nss["id_"+id];else {nss = ( nss["id_"+id] = ([]).concat(nss) )};nss[10]=color;nss[11]=scolor;nss[13]=css
};dhtmlXTabBar.prototype._hideHover=function(tab){if ((!this._lastHower)||(this._lastHower==tab)||(this._lastHower==this._lastActive))
return;var nss=this._getTabStyle(this._lastHower.idd);switch (this._tbst){case "win_text":
this._lastHower._lChild.style.backgroundImage='url('+this._imgPath+this._mode+nss[1]+')';break};this._lastHower=null};dhtmlXTabBar.prototype._getTabById=function(tabId){return this.tabsId[tabId]};dhtmlXTabBar.prototype.setTabActive=function(tabId,mode){var tab=this._getTabById(tabId);if (tab)this._setTabActive(tab,(mode===false))};dhtmlXTabBar.prototype._setTabActive=function(tab,mode){if (tab==this._lastActive)return false;var nss=this._styles[this._cstyle]
if (nss["id_"+tab.idd])nss=nss["id_"+tab.idd];if ((tab._disabled)||(tab.style.display=="none")) return false;if (((!mode)&& this._onsel)&&(!this._onsel(tab.idd,this._lastActive?this._lastActive.idd:null))) return false;tab.className=tab.className.replace(/dhx_tab_element_inactive/g,"dhx_tab_element_active");if (nss[11])tab.style.backgroundColor=nss[11];this._setContent(tab);this._deactivateTab();if (this._vMode){switch (this._tbst){case "win_text":
tab._lChild.style.backgroundImage='url('+this._imgPath+this._mode+nss[4]+')';tab.childNodes[0].childNodes[0].src=this._imgPath+this._mode+nss[3];tab.childNodes[1].childNodes[0].src=this._imgPath+this._mode+nss[5];tab.style.height=parseInt(tab.style.height)+nss[9]+"px";tab._lChild.style.height=parseInt(tab._lChild.style.height)+nss[9]+"px";tab.style[this._align=="right"?"marginBottom":"marginTop"]="-3px"
tab.style.width=this._height+3+"px";if (this._bMode)tab._lChild.style.width=this._height+3+"px";this._conZone.scrollLeft=tab._scrollState||0;break}}else
{switch (this._tbst){case "win_text":
tab._lChild.style.backgroundImage='url('+this._imgPath+this._mode+nss[4]+')';tab.childNodes[0].childNodes[0].src=this._imgPath+this._mode+nss[3];tab.childNodes[1].childNodes[0].src=this._imgPath+this._mode+nss[5];tab.style.width=parseInt(tab.style.width)+nss[9]+"px";tab._lChild.style.width=parseInt(tab._lChild.style.width)+nss[9]+"px";tab.style[this._align=="left"?"marginLeft":"marginRight"]="-3px"
tab.style.height=this._height+3+"px";if (this._bMode)tab._lChild.style.height=this._height+3+"px";this._conZone.scrollTop=tab._scrollState||0;break}};this._lastActive=tab;return true};dhtmlXTabBar.prototype._setTabBottom=function(tab){if (!this._vMode){if (tab.parentNode!=this.rows[this.rows.length-1])this._tabZone.appendChild(tab.parentNode)};var j=new Array();for (var i=0;i<this.rows.length;i++)if (this.rows[i]!=tab.parentNode)j[j.length]=this.rows[i];j[j.length]=tab.parentNode;this.rows=j;if (this._vMode)this.setRowSizesA();if (this._lineA.parentNode!=this.rows[this.rows.length-1]){this._lineA.parentNode.removeChild(this._lineA);this.rows[this.rows.length-1].appendChild(this._lineA)}};dhtmlXTabBar.prototype._createTab = function(text,size,IsCloseButton,nss){var tab=document.createElement("DIV");tab.className='dhx_tab_element dhx_tab_element_inactive';var thml="";if (size=="*"){size="10";tab.style.whiteSpace="nowrap"};switch (this._tbst){case 'text':
thml=text;break;case 'win_text':
if (this._vMode){thml='<div style="position:absolute;'+(this._bMode?"right":"left")+':0px;top:0px;height:'+nss[7]+'px;width:'+(this._height+3)+'px;"><img src="'+this._imgPath+this._mode+nss[0]+((this._bMode&&(_isFF||this._isIE7s||_isOpera))?'" style="position:absolute;right:1px;"':'"')+'></div>';thml+='<div style="position:absolute;'+(this._bMode?"right":"left")+':0px;bottom:0px;height:'+nss[8]+'px;width:'+(this._height+3)+'px;"><img src="'+this._imgPath+this._mode+nss[2]+((this._bMode&&(_isFF||this._isIE7s||_isOpera))?'" style="position:absolute;right:1px;"':'"')+'></div>';thml+='<div style="position:absolute;background-repeat: repeat-y;background-image:url('+this._imgPath+this._mode+nss[1]+');width:'+(this._height)+'px;left:0px;top:'+nss[7]+'px;height:'+(parseInt(size||this._tabSize)-nss[8]-nss[7]+"px")+(nss[13]?('" class="'+nss[13]):'')+'">'+text+'';if (IsCloseButton){thml+='<img src="'+(this._imgPath+this._TabCloseButtonSrc)+'" style="cursor:pointer;position:absolute;right:2px;bottom:4px;" onclick="" />'};thml+='</div>'}else
{thml='<div style="position:absolute;'+(this._bMode?"bottom":"top")+':0px;left:0px;width:'+nss[7]+'px;height:'+(this._height+3)+'px;"><img src="'+this._imgPath+this._mode+nss[0]+((this._bMode&&(_isOpera||_isFF||this._isIE7s))?'" style="position:absolute;bottom:0px;"':'"')+'></div>';thml+='<div style="position:absolute;'+(this._bMode?"bottom":"top")+':0px;right:0px;width:'+nss[8]+'px;height:'+(this._height+3)+'px;"><img src="'+this._imgPath+this._mode+nss[2]+((this._bMode&&(_isOpera||_isFF||this._isIE7s))?'" style="position:absolute;bottom:0px;left:0px;"':'"')+'></div>';thml+='<div style="position:absolute;background-repeat: repeat-x;background-image:url('+this._imgPath+this._mode+nss[1]+');height:'+(this._height+(this._bMode?1:3))+'px;top:0px;left:'+nss[7]+'px;width:'+(parseInt(size||this._tabSize)-nss[8]-nss[7]+"px")+';">';if (IsCloseButton){thml+='<img src="'+(this._imgPath+this._TabCloseButtonSrc)+'" style="cursor:pointer;position:absolute;right:0px;top:4px;" onclick="" />'};thml+='<div style="padding-top:3px;" '+(nss[13]?('" class="'+nss[13]+'"'):'')+'>'+text+'</div>';thml+='</div>'};if (!nss[10])tab.style.backgroundColor='transparent';else tab.style.backgroundColor=nss[10];break};tab.innerHTML=thml;tab.style.padding="0px";tab._lChild=tab.childNodes[tab.childNodes.length-1];if (this._vMode){tab.style.height=parseInt(size||this._tabSize)+"px";tab.style.width=this._height+1+"px"}else
{tab.style.width=parseInt(size||this._tabSize)+"px";tab.style.height=this._height+1+"px"};tab._offsetSize=parseInt(size||this._tabSize);return tab};dhtmlXTabBar.prototype.adjustTabSize=function(tab,size){var nss=this._getTabStyle(tab.idd);size=size||tab.scrollWidth+(this._TabCloseButton?50:20);tab.style[this._vMode?"height":"width"]=size+"px";tab.childNodes[2].style[this._vMode?"height":"width"]=size-nss[8]-nss[7]+"px";tab._offsetSize=size};dhtmlXTabBar.prototype.clearAll = function(){var z=this._conZone.style.backgroundColor;this._content=new Array();this.tabsId=new Array();this.rows=new Array();this._lastActive=null;this._lastHower=null;this.entBox.innerHTML="";this._glframe=null;this._createSelf(this._vMode);this.setStyle(this._cstyle);if (z)this._conZone.style.backgroundColor=z;this.enableContentZone(this._eczF)};dhtmlXTabBar.prototype.setImagePath = function(path){this._imgPath=path};dhtmlXTabBar.prototype.loadXMLString=function(xmlString,afterCall){this.XMLLoader=new dtmlXMLLoaderObject(this._parseXML,this,true,this.no_cashe);this.XMLLoader.waitCall=afterCall||0;this.XMLLoader.loadXMLString(xmlString)};dhtmlXTabBar.prototype.loadXML=function(file,afterCall){this.XMLLoader=new dtmlXMLLoaderObject(this._parseXML,this,true,this.no_cashe);this.XMLLoader.waitCall=afterCall||0;this.XMLLoader.loadXML(file)};dhtmlXTabBar.prototype._getXMLContent=function(node){var text="";for (var i=0;i<node.childNodes.length;i++){var z=node.childNodes[i];text+=(z.nodeValue===null?"":z.nodeValue)};return text};dhtmlXTabBar.prototype._parseXML=function(that,a,b,c,obj){that.clearAll();var selected="";if (!obj)obj=that.XMLLoader;var atop=obj.getXMLTopNode("tabbar");var arows = obj.doXPath("//row",atop);that._hrfmode=atop.getAttribute("hrefmode")||that._hrfmode;that._margin =atop.getAttribute("margin")||that._margin;that._align =atop.getAttribute("align") ||that._align;that._offset =atop.getAttribute("offset")||that._offset;var acs=atop.getAttribute("tabstyle");if (acs)that.setStyle(acs);acs=atop.getAttribute("skinColors");if (acs)that.setSkinColors(acs.split(",")[0],acs.split(",")[1]);for (var i=0;i<arows.length;i++){var atabs = obj.doXPath("./tab",arows[i]);for (var j=0;j<atabs.length;j++){var width=atabs[j].getAttribute("width");var name=that._getXMLContent(atabs[j]);var id=atabs[j].getAttribute("id");that.addTab(id,name,width,"",i);if (atabs[j].getAttribute("selected")) selected=id;if (that._hrfmode)that.setContentHref(id,atabs[j].getAttribute("href"));else
for (var k=0;k<atabs[j].childNodes.length;k++){var cont=atabs[j].childNodes[k];if (cont.tagName=="content"){if (cont.getAttribute("id"))
that.setContent(id,cont.getAttribute("id"));else
that.setContentHTML(id,that._getXMLContent(cont))}}}};if (selected)that.setTabActive(selected);if (that.dhx_xml_end)that.dhx_xml_end(that)};dhtmlXTabBar.prototype.setOnLoadingEnd=function(func){if (typeof(func)=="function")
this.dhx_xml_end=func;else
this.dhx_xml_end=eval(func)};dhtmlXTabBar.prototype.setOnTabContentLoaded=function(func){if (typeof(func)=="function")
this.dhx_tab_loaded=func;else
this.dhx_tab_loaded=eval(func)};dhtmlXTabBar.prototype.setOnTabClose=function(func){if (typeof(func)=="function")
this.dhx_tab_close=func;else
this.dhx_tab_close=eval(func)};dhtmlXTabBar.prototype.forceLoad=function(tabId,href){var tab=this.tabsId[tabId];if (href)this._hrefs[tabId]=href;this._content[tab.idd]._loaded=false;this._setContent(tab,this._lastActive.idd!=tabId)};dhtmlXTabBar.prototype.setHrefMode=function(mode){this._hrfmode=mode};dhtmlXTabBar.prototype.setContentHref=function(id,href){if (!this._hrefs)this._hrefs=new Array();this._hrefs[id]=href;switch(this._hrfmode){case "iframe":
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -