////////////////////////////////////////////////////////////////////////////////////// //显示多标签打开网页 //common/common_multiTags.jsp,common/common_multiTags_tag.jsp //配合使用,以下为例子 ////////////////////////////////////////////////////////////////////////////////////// /*****************************a.jsp*************************************************** 进入多标签方式一
进入多标签方式二
*********************************************************************************/ /*****************************query.jsp*******************************************
baidu
google
sina
*********************************************************************************/ ////////////////////////////////////////////////////////////////////////////////// function multiTagsProperties(isShowSplitScreen, focusTabIndex){//是否分屏(未实现),焦点在哪个标签上,多标签格式对象 this.isShowSplitScreen=(isShowSplitScreen==false?false:true); this.focusTabIndex = focusTabIndex; this.rightButtonsHtml = ""; this.tabStyle="";//可以有1或为空的类型,空为默认,1常用于二级多标签 this.properties = new Array("isShowSplitScreen", "rightButtonsHtml", "focusTabIndex", "tabStyle"); }; //此方法传外部调用 function multiTags(name, url, targetWin, multiTagsProperties){ var names = (typeof(name)!="string") ? name:new Array(name); var urls = (typeof(url)!="string") ? url : new Array(url); var tagObjects = new Array(); for(var i=0,len=(names==null?0:names.length); i"); html_form += (""); html_form += (""); html_form += (""); html_form += (""); html_form += (""); } //属性集合 if(multiTagsProperties){ var attrs = multiTagsProperties.properties; for(var i=0,len=(attrs?attrs.length:0);i"); html_form += (""); } } html_form += ""; var divid = "div_form_multitags"; if($){//改用jquery写法 var div = $("#"+divid); if(div.size() > 0){ $(div).html(html_form); } else{ $(document.body).append("
"+html_form+"
"); } var fbox = $($("form[name='form_multitags']").eq(0)); if(targetWin){ $(fbox).attr("target", ((typeof(targetWin) == "string") ? targetWin : (!targetWin.name?targetWin:targetWin.name))); } fbox.submit(); } else{ var div = document.getElementById(divid); if(div){ div.innerHTML = ""; } else{ div = document.createElement("div"); div.id = divid; document.body.insertBefore(div); } div.innerHTML = html_form; var fbox = eval("form_multitags"); if(targetWin){ fbox.target = (typeof(targetWin) == "string") ? targetWin : (!targetWin.name?targetWin:targetWin.name); } fbox.sumbit(); } } //此方法外部调用 function openTag(name,url){ url = _MM_multiTags_reBuild_URL(url); parent.node_bar._MM_multiTags_addTag(name,url); } //此方法打开的可设定,只打开一次 function openTag2(tagObject){ tagObject.url = _MM_multiTags_reBuild_URL(tagObject.url); parent.node_bar._MM_multiTags_addTag2(tagObject); } //此方法打开的可设定,只打开一次 function openTagOnce(uid_or_tagobject, name, url, closeFlag, isDelayLoad){ if(uid_or_tagobject instanceof tagObject){ openTag2(uid_or_tagobject); } else{ openTag2(new tagObject(uid_or_tagobject, name, url, closeFlag, isDelayLoad)); } } /** * 当直接向标签框架的父亲对象执行时,调用此方法 */ function appendTagFromParent(parentObject, uid, name, url, closeFlag, isDelayLoad){ var tagObj = new tagObject(uid,name, url, closeFlag, isDelayLoad); tagObj.url = _MM_multiTags_reBuild_URL(tagObj.url); parentObject.node_bar._MM_multiTags_addTag2(tagObj); } /** * 判断是否存在了标签框架 */ function existsTagFrame(parentObject){ return !(!parentObject.node_bar); } //获得当前激活的窗口的name function getCurrentFocusFrameName(parentObject){ return parentObject.node_bar.current_focus_frame_name; } //定义对象,closeFlag是否显示关闭标连接,isDelayLoad是否推迟加载网页isDelayLoad=true只打开标签不加载网页,点击了标签后才加载(同时打开多个标签时应用多) function tagObject(uid, name, url, closeFlag, isDelayLoad) { this.uid = uid; this.name = name; this.url = url; this.closeFlag = (closeFlag != false && closeFlag != "false") ? true : false;//null或true,false this.isDelayLoad = (isDelayLoad == true) ? true : false; this.label_len = 6; } function multiTags_contentLoad(index){ try{node_bar._MM_multiTags_contentLoad(index);}catch(ex){;}; } //////////////////////////////////////////////////////////////////////////////////////// //====================================================================================== function _MM_multiTags_contentLoad(index)//从0开始 { index = (index) ? index : 0; try{ var tag = document.getElementsByTagName("A")[index]; if(tag) tag.click(); else document.getElementsByTagName("A")[0].click(); } catch(ex){ ; } } function _MM_multiTags_focusTagByCellId(cellId){ //激活 try{ var tag = document.getElementById(cellId); if(tag){ tag.children[0].click(); return; } } catch(ex){;} _MM_multiTags_contentLoad(); } //如果是相对地址,则需要进行处理 function _MM_multiTags_reBuild_URL(url) { //url转化为调用此方法的相对路径 if(!(/^\/|http:\/\/|https:\/\/|ftp:\/\/|mailto:\/\//i.test(url))){ var temp = window.location.href; temp = temp.substr(0,temp.lastIndexOf("/")); url = temp + "/" + url; } return url; } //====================================================== var __MAX_TAG_COUNT = 26;//最大打开数 var __cur_tag_count = 0;//有加有减 var __cur_tag_index = 0;//一直往上加 //增加一个标签项,closeFlag是否显示关闭标连接 function _MM_multiTags_addTag(name,url,closeFlag) { _MM_multiTags_addTag2(new tagObject(null,name,url,closeFlag)); } //根据对象打开一标签,根据uid,如果找到相同的,则直接触发点击事件 function _MM_multiTags_addTag2(tagObject) { if(__cur_tag_count >= __MAX_TAG_COUNT){ alert("最多只能打开"+__MAX_TAG_COUNT+"个凭证窗口,请先关闭一些后再打开。"); return; } __cur_tag_count ++; __cur_tag_index ++; //========================================= var uid = tagObject.uid; var name = tagObject.name; var url = tagObject.url; var closeFlag = tagObject.closeFlag; var label_len = !tagObject.label_len ? 6 : tagObject.label_len; //----------------------------------------- var cellId = "multiTags_tag_" + ((uid)?uid:__cur_tag_index); //alert(cellId); //----------------------------------------- //--如果uid不为空,则先查找是否存在这样的 if(uid && document.getElementById(cellId)){//如果找到,则直接点击 document.getElementById(cellId).children[0].click(); return; } name = (!name) ? "未定义" : name; //alert(tagObject.label_len) var short_name = (name.length < label_len) ? name : name.substr(0, label_len)+".."; var html = ""; html += " "+short_name+""; html += ""; html += ""; if((closeFlag == null || closeFlag == "true" || closeFlag == true)){//处理是否显示关闭标签 html += ""; } //html += " "; //alert(html); var table = document.getElementById("barTable"); var row = table.rows[0]; var cell = row.insertCell(row.cells.length); cell.innerHTML = html; cell.id = cellId; cell.className = "multiTags_menu_item"; if(tagObject.isDelayLoad == false){//不推迟加载的同时 if(closeFlag == null || closeFlag == true){//不允许关闭的窗口,则触发点击事件 cell.children[0].click(); } } } //---------------------------------------------------- //重新计算并设置菜单高度 function _MM_reset_barTable_height(){ //------------------------------------------- try{ var frameset = _MM_multiTage_GetFrameSet(); //如果换行了,则增加高度 frameset_rows = frameset.rows; //alert(); var menu_table_height = $(parent.window.node_bar.document).find("#barTable").height(); //alert(menu_table_height); frameset_rows = (menu_table_height&&menu_table_height>30?menu_table_height:30) + "," + frameset_rows.substring(frameset_rows.indexOf(",")+1); //alert(frameset_rows); frameset.rows = frameset_rows; }catch(ex){;}; } //---------------------------------------------------- //获取框架 function _MM_multiTage_GetFrameSet(){ return parent.window.node_mainframe; } /////////////////////////////////////////////////////// var multiTags_history_click_cellId_list = new Array();//用于记录点击窗口的次序,方便关闭窗口时打开上一个窗口 /////////////////////////////////////////////////////// var current_focus_frame_name = null; //点击了某一个标签项,注:必须以此为打开标签,其中menuItem与标签中的cellId相同的值 function _MM_multiTags_doClickMenuItem(url, menuItem, isRefresh){ var frameset = _MM_multiTage_GetFrameSet(); var frames = frameset.getElementsByTagName("frame"); //========================================= var frameset_rows = "30"; var frameName = 'node_mainWin_' + menuItem; current_focus_frame_name = frameName; //alert(frameName); //-------------------------------------------- var indexFrame = -1; for(var i=1,len=frames.length; i1) focus_cellId_afterRemove = row.cells[1].id; else{ //alert("没有更多标签了,不能关闭"); } } else{ focus_cellId_afterRemove = row.cells[i-1].id; } break; } } __cur_tag_count --; //删除标签 var tag = document.getElementById(cellId); if(tag){ tag.parentElement.removeChild(tag); } //=========删除窗口========= var frameset = _MM_multiTage_GetFrameSet(); var frames = frameset.getElementsByTagName("frame"); var frameName = 'node_mainWin_' + cellId; var frameset_rows = ""; for(var i=frames.length-1; i>0; i--){ var tmp_frame = frames[i]; if(tmp_frame.name == frameName){ frameset.removeChild(tmp_frame); } else{ frameset_rows += "0,"; } } frameset_rows += ",30"; //--------------------------- //处理关闭后要显示哪一个窗口 //alert(multiTags_history_click_cellId_list.length); var tmp_history_cellId_list = multiTags_history_click_cellId_list; var new_history_cellId_list = new Array(); for(var i=0,len=tmp_history_cellId_list.length; i0){ try{ _MM_multiTags_focusTagByCellId(history_last_cellId); } catch(ex){ if(focus_cellId_afterRemove){ _MM_multiTags_focusTagByCellId(focus_cellId_afterRemove); } } } else{ if(focus_cellId_afterRemove){ _MM_multiTags_focusTagByCellId(focus_cellId_afterRemove); } } //------------------------------ //-------------------------------------------- _MM_reset_barTable_height();//重新标签栏计算高度 //-------------------------------------------- } //分屏显示 function _MM_multiTags_splitScreen(span){ //未实现 } //选中时要加亮 function _MM_multiTags_playSignLink(link){ if($){//改用jquery写法 $("a[id^='tab_link_']").each(function(i){ $(this).css({"color": "#000", "font-weight": "normal"}); }); $(link).css({"color": "#ff0000", "font-weight": "bold"}); } else{ try{playSignLink(link);}catch(ex){;} } } ///////////////////////////////////////////////////////////////