/* 主框架 */ /*string类型的去前后空格和format方法*/ String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }; String.prototype.format=function() { if(arguments.length==0) return this; for(var s=this, i=0; i ul > li', panel).each(function () { var color = $(this).attr("data-style"); if (color == configColor) { // 匹配上了才重设默认主题 $(this).addClass("current"); $('#style_color').attr("href", "css/themes/" + color + ".css"); //if (store) { store('style_color', color); //} } }); }; function setFrameWorkByConf() { //设置用户相关的框架下拉菜单是否可用 var helpMenuItem = openoFrameWork_conf.helpMenuItem; var aboutMenuItem = openoFrameWork_conf.aboutMenuItem; var flightMenuItem = openoFrameWork_conf.flightMenuItem; var fullscreenMenuItem = openoFrameWork_conf.fullscreenMenuItem; var logoutMenuItem = openoFrameWork_conf.logoutMenuItem; var changePassMenuItem = openoFrameWork_conf.changePassMenuItem; if (!helpMenuItem || helpMenuItem === "false") { $('#uep_ict_help_url').parent('li').remove(); } if (!aboutMenuItem|| aboutMenuItem === "false") { $('[data-target="#aboutDlg"]').parent('li').remove(); } if (!helpMenuItem && !aboutMenuItem) { $('#uep_ict_help_div').remove(); } if (!flightMenuItem|| flightMenuItem === "false") { $('#header_notification_bar').html("
      
"); } if (!fullscreenMenuItem|| fullscreenMenuItem === "false") { //$('#trigger_fullscreen').parent().css("display", "none"); $('#trigger_fullscreen_div').html(""); } if (!logoutMenuItem || logoutMenuItem === "false") { //$('#trigger_logout').parent().css("display", "none"); $('#trigger_logout_div').html(""); } if ((!fullscreenMenuItem && !logoutMenuItem) || (fullscreenMenuItem === "false" && logoutMenuItem === "false")) { $('#full_logout_divider').css("display", "none"); } if (!changePassMenuItem ) { $('#changePwd_labellink').css('display','none'); $('#full_logout_divider').css('display','none'); } //设置二次开发者选择的框架皮肤 var defaultColor = openoFrameWork_conf.defaultThemeColor; var panel = $('.zte-theme-panel'); $('ul > li', panel).removeClass("current"); if (store && !store('style_color')) { // cookie没有才设置默认主题 setThemeColor(defaultColor); } else { setThemeColor(store('style_color')); } }; /*新增的hashtabel实现类,用户后续iframe的缓存,前进后退时打开过的页面的菜单id的缓存等*/ function Hashtable() { this._hash = {}; this._count = 0; this.add = function(key, value) { if (this._hash.hasOwnProperty(key)) return false; else { this._hash[key] = value; this._count++; return true; } } ; this.hash = function() { return this._hash; }; this.remove = function(key) { delete this._hash[key]; this._count--; } ; this.count = function() { return this._count; }; this.items = function(key) { if (this.contains(key)) return this._hash[key]; }; this.contains = function(key) { return this._hash.hasOwnProperty(key); }; this.clear = function() { this._hash = {}; this._count = 0; }; this.replace = function(key, value) { //有则删除后增加///相当于更新 if(this.contains(key)){ this.remove(key); } return this.add(key, value); } ; }; var fMenuSiderDivId = 'page-f-sidebar-menu'; var fMenuMegaDivId = 'f_hormenu'; var megaSiderDivId = 'page-megachild-sidebar-menu'; var megaDivId = 'main_hormenu'; var openoFrameWork_menu_horizontal = "horizontal"; var openoFrameWork_menu_vertical = "vertical"; var openoFrameWork_menu_fmenu = "fmenu"; var openoFrameWork_showNav = "true"; var openoFrameWork_smallView = 960;//原来为992,但是在投影仪上不准(投影仪设置为1024,但是实际尺寸比1024小),边栏菜单也会被移除,这个设置一个稍小的值。 /*下面是主框架的核心*/ var openoFrameWork = function () { var defaultLanage=getLanguage(); var isRTL = false;//文档顺序 var isTouch=function(){ try { document.createEvent("TouchEvent"); return true; } catch (e) { return false; } }; var isDesktop = !isTouch; var isIE8 = false; var isIE9 = false; var isIE10 = false; var gdocTitle=""; var _sidebarWidth = 225; var _sidebarCollapsedWidth = 35; var responsiveHandlers = []; var cachedIframes=new Hashtable(); var cachedIframesObject=new Hashtable(); var breadcrumbBtnMenus=new Hashtable(); var _menuCategorys=new Hashtable(); var _iframe="page-mainIframe"; //全局变量保存的是当前正在打开使用的iframe var _sceneURLRootPath=""; var _hashSource="";//信号量 var _isClicked=false;//信号量 //var _breadcrumbSource=false; // 皮肤颜色 var layoutColorCodes = { 'blue': '#4b8df8', 'red': '#e02222', 'green': '#35aa47', 'purple': '#852b99', 'grey': '#555555', 'light-grey': '#fafafa', 'yellow': '#ffb848', 'ztebluelight': '#3366cc' }; // 获取真实的设备窗口大小,参考了 http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/ var _getViewPort = function () { var e = window, a = 'inner'; if (!('innerWidth' in window)) { a = 'client'; e = document.documentElement || document.body; } return { width: e[a + 'Width'], height: e[a + 'Height'] } } // 初始化 var dealInit = function () { var sence = '0'; var menuSence = getUrlParam("menu"); var confSence = 0; if (menuSence) { sence = menuSence; } else { sence = confSence; } switch (sence) { case "1": gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_1').text().trim(); break; case "2": gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_2').text().trim(); break; case "3": gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_3').text().trim(); break; case "0": default: gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title').text().trim(); break; } if ($('body').css('direction') === 'rtl') { isRTL = true; } isIE8 = !! navigator.userAgent.match(/MSIE 8.0/); isIE9 = !! navigator.userAgent.match(/MSIE 9.0/); isIE10 = !! navigator.userAgent.match(/MSIE 10.0/); if (isIE10) { $('html').addClass('ie10'); // IE10 } if (isIE10 || isIE9 || isIE8) { $('html').addClass('ie'); // IE10 } var deviceAgent = navigator.userAgent.toLowerCase(); if (deviceAgent.match(/(iphone|ipod|ipad)/)) { $(document).on('focus', 'input, textarea', function () { $('.page-header').hide(); if($('.page-footer')&&$('.page-footer').length>0) $('.page-footer').hide(); }); $(document).on('blur', 'input, textarea', function () { $('.page-header').show(); if($('.page-footer')&&$('.page-footer').length>0) $('.page-footer').show(); }); } else { $(document).on('focus', 'input, textarea', function () { if($('.page-footer')&&$('.page-footer').length>0) $('.page-footer').hide(); }); $(document).on('blur', 'input, textarea', function () { if($('.page-footer')&&$('.page-footer').length>0) $('.page-footer').show(); }); } } //处理滚动到 var dealScrollTo=function (el, offeset) { } var dealstartPageLoading=function(message) { $('.page-loading').remove(); $('body').append('
  ' + (message ? message : $.i18n.prop('com_zte_ums_ict_framework_ui_loading')) + '
'); } var dealstopPageLoading=function() { $('.page-loading').remove(); } var dealSidebarState = function () { // 窗体宽度小尺寸(平板和iphone模式下)时移出左边栏 var viewport = _getViewPort(); if (viewport.width < openoFrameWork_smallView) { $('body').removeClass("page-sidebar-closed"); }else{ if (getCookie('sidebar_closed') === '1') { $('body').addClass('page-sidebar-closed'); } } } // openoFrameWork.addResponsiveHandler()回调函数. var runResponsiveHandlers = function () { //重新初始化其他订阅的元素elements for (var i = 0; i < responsiveHandlers.length; i++) { var each = responsiveHandlers[i]; each.call(); } } // 窗体重新调整大小时初始化调整边栏状态高度 var dealResponsive = function () { dealSidebarState(); ajustHorMenuDropDirection(); dealSidebarAndContentHeight(); dealFixedSidebar(); runResponsiveHandlers(); } // 页面重载入时初始化调整内部布局 var dealResponsiveOnInit = function () { dealSidebarState(); dealSidebarAndContentHeight(); setTimeout(function () { ajustHorMenuDropDirection(true); }, 100); } // 窗体重新调整大小时初始化调整布局 var dealResponsiveOnResize = function () { var resize; if (isIE8) { var currheight; $(window).resize(function () { if (currheight == document.documentElement.clientHeight) { return; } if (resize) { clearTimeout(resize); } resize = setTimeout(function () { dealResponsive(); }, 50); currheight = document.documentElement.clientHeight; }); } else { $(window).resize(function () { if (resize) { clearTimeout(resize); } resize = setTimeout(function () { dealResponsive(); }, 50); }); } } var changeSiderBar = function(hideAllMenu){ var siderbarpos = $(".nav-pos-direction", $(".zte-theme-panel")).val(); var sidermenu = $("#page-sidebar-menu"); var hormenu = $("#main_hormenu"); var fhorMenu = $("#" + fMenuMegaDivId); var fsiderMenu = $("#" + fMenuSiderDivId); if(hideAllMenu){ sidermenu.css('display','block');// 侧边栏显示 hormenu.css("display", "none");//隐藏水平菜单栏 fhorMenu.css('display','none'); fsiderMenu.css('display','none'); return; } sidermenu.css('display','none'); hormenu.css("display", "none"); fhorMenu.css('display','block'); fsiderMenu.css('display','block'); //除了toggle按钮之外,是否还有其他儿子是要显示的,如果没有,那么竖菜单不显示;反之,显示。 var lis = fsiderMenu.children(".sidebar-toggler-wrapper").siblings(); if(lis.length > 0 && lis.css('display') != "none"){ fsiderMenu.css('display','block'); $("body").removeClass("page-full-width"); if ($('body').hasClass("page-sidebar-closed")) { $(".page-content").css("marginLeft", _sidebarCollapsedWidth); } else { $(".page-content").css("marginLeft", _sidebarWidth); } } } //根据当前菜单在屏幕的位置,和一级菜单下二级菜单的排列,来决定菜单是向左展开还是向右展开 var ajustHorMenuDropDirection = function( isInit ){ //获取屏幕宽度 var bodyWidth = document.body.clientWidth; //循环,获取每个一级菜单在屏幕中的位置 var levelOneAdropdowns = $('a.dropdown-toggle', '#main_hormenu' ); //每一个文字span的图标、他父亲的margin\padding等占用的位置 var marginCount = 5 * 2 + 17.5 + 2 * 2 + 30 + 15 * 2 + 3; for( var i = 0 ; i < levelOneAdropdowns.length ; i++ ){ var a = $(levelOneAdropdowns[i]); var leftOffset = a.offset().left; //获取二级菜单的数量 var ul = a.parent().children('.dropdown-menu'); var groupDivs = $('.zteDivWidth' , ul); var widthOfDropDownMenu = 0; for(var j = 0 ; j < groupDivs.length && groupDivs.length >0 ; j++ ){//循环获取每个分组的宽度 var eachDiv = groupDivs[j]; var maxLengthText = ""; var maxLength = 0; var spans = $('span' , eachDiv).each(function(){ var innerText = this.innerText; if( innerText.length > maxLength ){ maxLength= innerText.length; maxLengthText = innerText; } }); widthOfDropDownMenu = widthOfDropDownMenu + getStringWidth(maxLengthText , 14) + marginCount; } //预估每个组占宽度150PX,多预计一点 if( widthOfDropDownMenu + leftOffset > bodyWidth ){ console.log("ajust class dropdown-menu-right ,id = "+ a.attr("id") ); ul.addClass('dropdown-menu-right'); //var right = bodyWidth - (leftOffset + a.width() + 15); //ul.attr('style' ,'right:' + right ); }else{ ul.removeClass('dropdown-menu-right'); //ul.removeAttr('style'); } } } // 屏幕大小发生变化或者移动设备旋转屏幕时处理响应式布局. var dealSidebarAndContentHeight = function (isToggler) { var content = $('.page-content'); var contentbody = $('.page-content-body'); var sidebar = $('.page-sidebar'); var body = $('body'); var height; var viewport = _getViewPort(); var scrAvaHeight=Math.min(window.screen.availHeight,viewport.height)-5; var footer=$('.footer'); var pgbread=$('.page-breadcrumb'); var pageableDiv=$('#pageableDiv'); console.log("pageableDiv height:"+pageableDiv.outerHeight(true)); var pheader=$('.header'); var childPagetype=!!cachedIframesObject.items(_iframe)?cachedIframesObject.items(_iframe).childpageType:""; if(childPagetype==="isc")//smartclient的子页面固定高度为视口可用内容区高度 { $('.sidebar-option', panel).val("fixed"); } dealShownav(); var available_height =scrAvaHeight - ((!footer||footer.length<=0)?0:footer.outerHeight(true)) - pheader.outerHeight(true); var _pageableDivHeight=(!pageableDiv||pageableDiv.length<=0||pageableDiv.is(":visible")==false)?0:pageableDiv.outerHeight(true); var h= scrAvaHeight-pheader.outerHeight(true)-((!footer||footer.length<=0||footer.is(":visible")==false)?0:footer.outerHeight(true))-pgbread.outerHeight(true)-_pageableDivHeight-(contentbody.outerHeight(true)-contentbody.height()); var miframe=_iframe==""?"page-mainIframe": _iframe; var pagemyIframe=$('.page-content .page-content-body .'+miframe); //.page-mainIframe if(pagemyIframe&&pagemyIframe.length>0){ //处理iframe,下面计算中间iframe的高度 var deviceAgent = navigator.userAgent.toLowerCase(); if (deviceAgent.match(/(iphone|ipod|ipad)/)) { //||viewport.height<=480 var w=viewport.width-content.offset().left-(pagemyIframe.offset().left-content.offset().left)*2;//宽度=总宽度-左边栏宽度-内容区内边距。左右两个 pagemyIframe.width(w); } //对桌面必须计算高度 var tmp_style = sidebar.attr('style');// firefox下执行 sidebar.height()会改变style样式,这里缓存下执行前的style样式,执行完后重新赋给页面元素 console.log("pym:parent iframe "+miframe+" sidebar.height:"+sidebar.height()+" h:"+h); h=sidebar.height()>h?sidebar.height():h; //IE下,把iframe的高度再减掉7,因为IE10及以下版本,计算的高度会比IE实际显示区域大,导致出现IE滚动条。 /*h=h-ICTFRAME_CONST_IFRAME_HEIGHT_AJUST; if(isIE){ h=h-ICTFRAME_CONST_IFRAME_HEIGHT_AJUST_IE; }*/ sidebar.attr('style',tmp_style); if (isDesktop) { //pagemyIframe.attr("height",h); if(cachedIframesObject.items(miframe).setMinHeight){ var minHeight=Math.min(scrAvaHeight,h); console.log("pym:parent iframe "+miframe+" window.screen.availHeight:"+scrAvaHeight+" viewport.height:"+viewport.height+" h:"+h+" minHeight:"+minHeight); cachedIframesObject.items(miframe).setMinHeight(minHeight); } }else{ //pagemyIframe.attr("height","100%");//去掉这里错误的设置,ipad上测试高度不正确 var _h=h; try{ _h=pagemyIframe.contents().height(); }catch(e){} h=_h>h?_h:h; if(cachedIframesObject.items(miframe).setMinHeight){ var minHeight=Math.min(scrAvaHeight,h); console.log("pym:parent iframe "+miframe+" window.screen.availHeight:"+scrAvaHeight+" viewport.height:"+viewport.height+" h:"+h+" minHeight:"+minHeight); cachedIframesObject.items(miframe).setMinHeight(minHeight); } } } if (body.hasClass("page-footer-fixed") === true && body.hasClass("page-sidebar-fixed") === true) { if (content.height() < available_height) { //content.attr('style', 'min-height:' + available_height + 'px !important'); dealAddStyle(content,'min-height',available_height + 'px',true); } } else{ if (body.hasClass("page-footer-fixed") === true && body.hasClass("page-sidebar-fixed") === false) { if (content.height() < available_height) { //content.attr('style', 'min-height:' + available_height + 'px !important'); dealAddStyle(content,'min-height',available_height + 'px',true); } } else { if (body.hasClass('page-sidebar-fixed')) { height = _calculateFixedSidebarViewportHeight(); } else { // firefox下执行 sidebar.height()会改变style样式,这里缓存下执行前的style样式,执行完后重新赋给页面元素 var tmp_style = sidebar.attr('style'); // height = sidebar.height() + 20; sidebar.attr('style',tmp_style); var headerHeight = pheader.outerHeight(true); var footerHeight = (!footer||footer.length<=0)?0:footer.outerHeight(true); if ($(window).width() > 1024 && (height + headerHeight + footerHeight) < scrAvaHeight) { height = scrAvaHeight - headerHeight - footerHeight; } } if (height <= content.height()) {//这里为了避免内容区域很小的时候出现内容区域无法充满屏幕,把min-height修改为height //content.attr('style', 'min-height:' + height + 'px !important'); dealAddStyle(content,'min-height',height + 'px',true); } } } // 屏幕小尺寸时会隐藏边栏,这时菜单由小屏幕右上图标控制,当屏幕变化到大尺寸屏幕时, // 需要按原菜单出现方式恢复菜单显示。 var screenwidth = $(window).width(); if(screenwidth >= openoFrameWork_smallView){ changeSiderBar(); if($(".page-sidebar-menu li").css('display') != "none"){ if ($('body').hasClass("page-sidebar-closed") && $(".sidebar-toggler").hasClass("close-by-viewportChange")) { if( !isToggler ){ $(".sidebar-toggler")[1].click(); } $(".sidebar-toggler").removeClass("close-by-viewportChange"); } } } else { changeSiderBar(true); } } var showIframe=function(iframe){ var resize,pagemainIframe; if (cachedIframes.count()>0) { for (var i in cachedIframes.hash()) { cachedIframes.replace(i,0); var pagemyIframe=$('.page-content .page-content-body .'+i); if(pagemyIframe&&pagemyIframe.length>0){ if(iframe==i){ pagemyIframe.show(); cachedIframes.replace(i,1); } else{ if("page-mainIframe"===i){//2015年12月10日 wimax要求页面切换后删除没有配置cacheNum的缓存页面 pagemainIframe=i; pagemyIframe.attr("src",""); pagemyIframe.remove(); }else{ pagemyIframe.hide(); } cachedIframes.replace(i,0); } } } } if(pagemainIframe){ delete cachedIframes._hash[pagemainIframe]; delete cachedIframesObject._hash[pagemainIframe]; } if (!cachedIframes.contains(iframe)) { cachedIframes.add(iframe,1); //增加的iframe加载完毕后 停止加载中提示信息 myIframe=$('.'+iframe); myIframe.show(); myIframe.load(function(){ /*if (!isDesktop) { if (resize) { clearInterval(resize); } resize = setInterval(dealIframeHeight, 400,$(this)); }*/ openoFrameWork.stopPageLoading(); }); } } var hidemenu=function(){ $('.hor-menu').hide(); dealAddStyle($('.page-content'),'margin-left','0px',true); dealAddStyle($('.page-sidebar'),'display','none',true); var fsiderMenu = $("#" + fMenuSiderDivId); fsiderMenu.children().css('display' , 'none'); } var hideAlarmLight=function(){ //$('#header_notification_bar').hide(); //$('#header_notification_bar').empty(); $('#header_notification_bar').html("
      
"); } var dealShownav=function(){ var showNav=openoFrameWork.getLocationURLParameter('showNav'); if( showNav=="false"){ openoFrameWork_showNav = showNav; hidemenu(); hideAlarmLight(); } } /* 点击菜单时,处理对应该菜单项的横,左菜单项 */ var dealRelateMenu = function(source) { // 点击子菜单时,对应的横竖菜单项也联动为选择样式,(高亮,箭头变化) var panel = $('.zte-theme-panel'); var navPosOption = $('.nav-pos-direction', panel).val(); var targetsource = null; var targetContainer = null; if (navPosOption === "vertical") { // 当前是左菜单,则处理对应的横菜单 targetsource = $("#"+source.attr("id"), $("#main_hormenu")); targetContainer = $(".header ul"); } else if (navPosOption === "horizontal") { var rtn = dealMgaBarRelated(source); dealFMenuRelated(source , megaSiderDivId); targetContainer = rtn[0]; targetsource = rtn[1]; }else if(navPosOption === openoFrameWork_menu_fmenu){ dealFMenuRelated(source , fMenuSiderDivId); } if (targetContainer) { // 移除原有菜单项的活动及箭头样式 targetContainer.children('li.active').removeClass('active'); targetContainer.find('.arrow.open').removeClass('open'); } if (targetsource) { // 增加活动及箭头样式 targetsource.parents('li').each(function () { $(this).addClass('iframe active'); $(this).find('a > span.arrow').addClass('open'); }); targetsource.parents('li').addClass('active'); if (navPosOption === "horizontal") { if (targetsource.parent().parent().parent().is("li")) { $('.arrow', targetsource.parent().parent().parent()).addClass("open"); } } } } var dealMgaBarRelated = function(source){ // 当前是横菜单,则处理对应的左菜单 targetsource = $("#"+source.attr("id"), $("[class='page-sidebar-menu']")); targetContainer = $("#page-sidebar-menu ul"); // 将先前左菜单展开的子菜单收缩 $("li.open",targetContainer).each(function() { var style = $("ul.sub-menu", this).attr("style"); if (style) { $("ul.sub-menu", this).removeAttr("style"); $(this).removeClass('open'); } }); // 当前是横菜单,但在屏幕缩小的情况下显示的是tip垂直菜单,而横菜单是隐藏的,所以需额外处理横菜单 if (source.parent().parent().parent().parent().attr("class").indexOf("page-sidebar-menu") >= 0) { var tiptargetsource = $("#"+source.attr("id"), $("#main_hormenu")); var tiptargetContainer = $(".header ul"); tiptargetContainer.children('li.active').removeClass('active'); tiptargetContainer.find('.arrow.open').removeClass('open'); tiptargetsource.parents('li').each(function () { $(this).addClass('iframe active'); $(this).find('a > span.arrow').addClass('open'); }); tiptargetsource.parents('li').addClass('active'); } return [targetContainer ,targetsource ]; } var dealFMenuRelated = function(source , siderDivId ){ var fsiderMenu = $("#" + siderDivId); if(isMoreMenuItemClick){//更多菜单点击 , 临时方案,增加信号量,使用之后就置为false isMoreMenuItemClick = false }else if($(source).parents('li').hasClass('mega-menu-dropdown')){//F的横向菜单的点击 var id = source.attr('id'); //非被点击的一级菜单的二级菜单都不显示 $('#' + siderDivId + '>li').hide(); var level2Lis = $("a[hparentid= " + id + "]" , fsiderMenu).parent(); level2Lis.show(); if(level2Lis.length > 0){//把竖向菜单的收起放大按钮显示出来 $('#' + siderDivId + '>li.sidebar-toggler-wrapper').show(); } if($("a[hparentid= " + id + "]" , fsiderMenu).length > 0){ //有子孙菜单时,把F菜单的竖菜单显示出来 dealFSidermenu(source ,siderDivId ); }else{//否则隐藏竖菜单 fsiderMenu.css('display','none'); $("body").addClass("page-full-width"); $(".page-content").css("marginLeft", _sidebarWidth); } }else{//F菜单的竖向菜单点击 //处理一种特殊情况,告警灯打开新页面,所有的菜单都不出现,因此,虽然这个source在竖菜单,但竖菜单这个时候实际上是没有显示的 if( openoFrameWork_showNav == "true") { $('#' + siderDivId + '>li').hide(); var lis = $(source).parents('li'); var id = lis.eq(lis.length-1).children( 'a' ).attr('hparentid'); //var id = $(source).parents('li').children('a').attr('hparentId'); var level2Lis = $("a[hparentid=" + id + "]" , fsiderMenu).parent(); level2Lis.show(); if(level2Lis.length > 0) {//把竖向菜单的收起放大按钮显示出来 $('#'+ siderDivId + '>li.sidebar-toggler-wrapper').show(); } //$('#' + siderDivId + '>li')[0].show(); dealFSidermenu(source , siderDivId); } } } var dealFSidermenu = function(source , siderDivId){ var fsiderMenu = $("#" + siderDivId); fsiderMenu.css('display','block'); $('ul.sub-menu',fsiderMenu).css('display','block'); $('.arrow',fsiderMenu).addClass('open'); $("body").removeClass("page-full-width"); if ($('body').hasClass("page-sidebar-closed")) { $(".page-content").css("marginLeft", _sidebarCollapsedWidth); } else { $(".page-content").css("marginLeft", _sidebarWidth); } var href = source.attr("href"); $('li.iframe' ,fsiderMenu ).removeClass('active'); var selectedIframeLi = $("a[href ='" + href + "']" ,fsiderMenu ).parent(); selectedIframeLi.addClass('active'); selectedIframeLi.parent().parent().addClass("open").addClass("active"); selectedIframeLi.parent().css('display','block'); selectedIframeLi.parent().parent().children('a').children('.arrow').addClass('open'); } var dealMenuItemClick=function(source,e,menuContainerStr){ var url = source.attr("href"); if(!url||url.length<2) return; e.preventDefault(); if(!_isClicked){//导航情况下,首先要模拟点开菜单分组 _isClicked=true;//如果菜单有子菜单点击一次来展开子菜单,注意这个信号量的变化,避免死循环 var mainMenu=source.parents('li').last(); if(!mainMenu.hasClass('open')){ dealLiAClick(mainMenu.children('a:eq(0)')); } } if(menuContainerStr&&menuContainerStr.length>0){ var menuContainer = $('.'+menuContainerStr+' ul'); menuContainer.children('li.active').removeClass('active'); // menuContainer.children('arrow.open').removeClass('open'); //menuContainer.find('.arrow.open').addClass('open'); } source.parents('li').each(function () { $(this).addClass('iframe active'); $(this).children('a > span.arrow').addClass('open'); }); source.parents('li').addClass('active'); // 处理点击菜单对应的横或左菜单项的选择样式 dealRelateMenu(source); if(menuContainerStr&&menuContainerStr.length>0){ if ($(window).width() <= 991 && $('.'+menuContainerStr).hasClass("in")) { $('.navbar-toggle').click(); } } if(dealMultTabPage(source)) return true; dealScrollTo(); var breadmenuID=e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:""; if(breadmenuID.length>0){//面包削导航来的,只需要重新生成面包削即可 //找到更多菜单按钮 var moreMenuItem = $('#' + breadmenuID , $('#pageableDiv')); if( moreMenuItem.length == 0 ){ moreMenuItem = $('#' + breadmenuID , $('.more-botton-zone')); } dealBreadcrumbBtnMenuItemClick(moreMenuItem,e); //dealBreadcrumb(source,false,e); }else{//非面包削导航来的, dealstartPageLoading(); if(dealIframe(source,e))//当返回true时说明是正常加载iframe了,否则面包削不能切换 dealBreadcrumb(source,false,e); } //dealShownav(); }; var dealMenuItemGetFocus=function(source,e,menuContainerStr){ var url = source.attr("href"); if(!url||url.length<2) return; e.preventDefault(); if(!_isClicked){//导航情况下,首先要模拟点开菜单分组 _isClicked=true;//如果菜单有子菜单点击一次来展开子菜单,注意这个信号量的变化,避免死循环 var mainMenu=source.parents('li').last(); dealLiAClick(mainMenu.children('a:eq(0)')); } if(menuContainerStr&&menuContainerStr.length>0){ var menuContainer = $('.'+menuContainerStr+' ul'); menuContainer.children('li.active').removeClass('active'); menuContainer.children('arrow.open').removeClass('open'); } source.parents('li').each(function () { $(this).addClass('iframe active'); $(this).children('a > span.arrow').addClass('open'); }); source.parents('li').addClass('active'); if(menuContainerStr&&menuContainerStr.length>0){ if ($(window).width() <= 991 && $('.'+menuContainerStr).hasClass("in")) { $('.navbar-toggle').click(); } } }; //处理iframe的核心处理类,逻辑较为复杂,注意各种参数的处理 var dealIframe=function(aObject,e){ _hashSource=""; var url = aObject.attr("href"); if(!url||url.length<2) return; url=openoFrameWork.handlBaseURL(url); //-----------2015年9月21日新增V5中大O需要的按照实例(根据选择的系统实例变化url的ip和端口地址)进行动态切换菜单的功能 var category= aObject.attr("category");//处理菜单中定义的Category属性 if(category&&category.length>0){//处理Category属性 var newIpPort=_menuCategorys.items(category); if(newIpPort&&newIpPort.ipPort&&newIpPort.ipPort.trim()!=""){//如果找到了 var newIpPortstr=openoFrameWork.getDomainURL(newIpPort.ipPort);//去掉ip和port后多余的部分 var urlipport=openoFrameWork.getDomainURL(url); console.log("old url:"+url); url=newIpPortstr+url.replace(urlipport,""); console.log("newIpPort:"+newIpPortstr+" newURL:"+url); } } //------------ dealstartPageLoading(); var cacheNum= aObject.attr("cacheNum");//当第三方应用需要框架缓存曾经打开过的页面时使用。 var shiftJS= aObject.attr("shiftJS");//当第三方应用不需要后面的href页面进行重新加载仅仅执行某个脚本打开某个功能时使用 var _iframeName= aObject.attr("iframeName");//对有些第三方应用设置了顶层frame名字的,这个必须设置 var _iframeAutoScroll= aObject.attr("iframeAutoScroll");//设置iframe的滚动条是否出现,可以设置为auto,yes或者no,默认为no 不出现. _iframeAutoScroll=!!_iframeAutoScroll?(_iframeAutoScroll==='yes'?'yes':_iframeAutoScroll==='auto'?'auto':'no'):'no'; _xdomain= aObject.attr("xdomain");//对有些第三方应用如果跨域了,需要设置这个信任域属性,以便于来跨域通讯.这里取值是一个正则表达式 _xdomain=_xdomain&&_xdomain.length>0?_xdomain:"*"; var _cssfile= aObject.attr("cssSrc");//设置iframe中页面需要动态加载的css文件. _cssfile=(_cssfile&&_cssfile.length>0)?_cssfile:""; var _runShiftJS=""; var pageContentBody=$('.page-content .page-content-body'); var tabHtml=""; var tabContentHtml=""; var tabID=""; var tabContentID=""; var iframename=''; function createIframe(pdiv,url,id,name,clsname,xdom,autoScroll){ var pymParent = new pym.Parent(pdiv, url, {xdomain:xdom}); pymParent.iframe.id=id; pymParent.iframe.name=name; //pymParent.iframe.setAttribute('display', "none"); //pymParent.iframe.style.height="100%"; //pymParent.iframe.setAttribute('height', "100%"); pymParent.iframe.setAttribute('class', clsname); pymParent.iframe.setAttribute('allowfullscreen',''); pymParent.iframe.setAttribute('mozallowfullscreen',''); pymParent.iframe.setAttribute('oallowfullscreen',''); pymParent.iframe.setAttribute('msallowfullscreen',''); pymParent.iframe.setAttribute('webkitallowfullscreen',''); //pymParent.iframe.setAttribute('scrolling',autoScroll); pymParent.iframe.setAttribute('onload', 'openoFrameWork.SyncCSS(this,0,"'+_cssfile+'");openoFrameWork.stopPageLoading();'); cachedIframesObject.replace(id,pymParent);//缓存iframe对象实体 pymParent.onMessage('height', function(he){ console.log("The frame "+id+" receive message height is "+he); var pagemyIframe=$('.page-content .page-content-body .'+id); var h=Math.max(this.minHeight,he); pagemyIframe.height(h); }); return pymParent; }; if(cacheNum){//处理缓存iframe和iframename标签 cacheNum="page-mainIframe"+cacheNum; iframename="fraMain"+cacheNum; }else{ cacheNum="page-mainIframe"; iframename="fraMain"; } iframename=!!_iframeName?_iframeName:iframename; _iframe= cacheNum;//注意这里_iframe是一个全局变量 var miframe=_iframe==""?"page-mainIframe": _iframe; var pagemyIframe=$('.page-content .page-content-body .'+miframe); var nagivJS=e&&e.data&&e.data.action?e.data.action:""; nagivJS=(!!nagivJS&&nagivJS.length>0)?(nagivJS.trim().toLowerCase()=="null"?nagivJS:"javascript:$('.page-content .page-content-body ."+miframe+"')[0].contentWindow."+nagivJS.trim()+";"):""; nagivJS=nagivJS.trim(); _runShiftJS=(!!shiftJS&&shiftJS.length>0)?(shiftJS.trim().toLowerCase()=="null"?shiftJS:"javascript:$('.page-content .page-content-body ."+miframe+"')[0].contentWindow."+shiftJS+";"):""; if(pagemyIframe&&pagemyIframe.length>0){//如果iframe已经添加了,则直接更改url或者执行切换或导航函数 var src=pagemyIframe.attr("src"); if((!!shiftJS||nagivJS.length>0)&&(src==url||src.split('?')[0]==url.split('?')[0])&& cacheNum!="page-mainIframe") { //url相同时,处理缓存shiftJS标签 //这里shiftJS必须定义iframe中的页面定义到window上的函数; //pagemyIframe.attr("scrolling",_iframeAutoScroll); cachedIframesObject.items(miframe).settings.xdomain=_xdomain; if(nagivJS.length>0&&nagivJS.toLowerCase()!="null") _runShiftJS=nagivJS;//如果是nagivJS导航过来的,nagivJS优先级高于shiftJS,如果有nagivJS就用nagivJS替换_runShiftJS; 直接执行一次导航切换 try{ if(_runShiftJS.trim().toLowerCase()!="null") eval(_runShiftJS); }catch(e){ if (e instanceof EvalError) { console.log(e.name + " EvalError: " + e.message); } else if (e instanceof SyntaxError) { console.log(e.name + " SyntaxError: " + e.message); }else if (e instanceof Error) { if(e.name.toLowerCase().trim()=="typeerror") { //console.log($.i18n.prop('com_zte_ums_ict_framework_ui_clickTooFast')); var parm={runShiftJS:_runShiftJS}; pagemyIframe.one('load',parm,function(e){ var runShiftJS=e&&e.data&&e.data.runShiftJS?e.data.runShiftJS:""; if(runShiftJS.length>0&&runShiftJS.toLowerCase()!="null") eval(runShiftJS);//点击太快了,页面没有加载完毕,那就加载完毕了再次执行 }) } } return false;//返回false 后续不再做其他动作了 } finally{ openoFrameWork.stopPageLoading(); } }else{//否则url不同,或者url相同但没有shiftjs if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是代码导航过来的去掉url参数中的默认action动作 url=url.split('?')[0];//去掉?参数,防止默认执行动作,只响应nagivJS指定的动作; } if(src.split('#')[0]!=url.split('#')[0])//如果相等说明是通过锚点导航的,真实url没有变化,对SPA应用比较普遍 { pagemyIframe.attr("src","");//url和src不同说明更换了页面,需要清空重新加载 }else //if (src.trim()==url.trim()) //没有shiftjs并且url相同,说明不需要再次加载了,已经加载过了 { openoFrameWork.stopPageLoading(); } pagemyIframe.attr("src",url); if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是nagivJS导航过来的,iframe加载完毕后执行一次导航切换脚本 var parm={nagivJS:nagivJS}; pagemyIframe.one('load',parm,function(e){ var nagivJS=e&&e.data&&e.data.nagivJS?e.data.nagivJS:""; if(nagivJS.length>0&&nagivJS.toLowerCase()!="null") eval(nagivJS);//如果没有加载过,加载后也要执行跳转的函数 }); } if(_cssfile.length>0&&_cssfile.toLowerCase()!="null"){//如果配置了cssSrc,每次切换都重新执行一边这个css文件,防止有遗漏 parm={syncCSSJS:'openoFrameWork.SyncCSS(this,10,"'+_cssfile+'");openoFrameWork.stopPageLoading();'}; pagemyIframe.one('load',parm,function(e){ var syncCSSJS=e&&e.data&&e.data.syncCSSJS?e.data.syncCSSJS:""; if(syncCSSJS.length>0&&syncCSSJS.toLowerCase()!="null") eval(syncCSSJS); }); } } }else{//否则添加新的iframe元素 overflow:visible; if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是代码导航过来的去掉url参数中的默认action动作 url=url.split('?')[0];//去掉?参数,防止默认执行动作,只响应nagivJS指定的动作; } var pdiv="pdiv_"+miframe; if($("#"+pdiv).length<=0){//检查下,如果该div没有添加过就添加 pageContentBody.append("
"); } dealstartPageLoading(); pymParent=createIframe(pdiv, url,miframe,miframe,miframe,_xdomain,_iframeAutoScroll); pagemyIframe=$(pymParent.iframe); if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是nagivJS导航过来的,iframe加载完毕后执行一次导航切换 var parm={nagivJS:nagivJS}; pagemyIframe=$('.page-content .page-content-body .'+miframe); if(pagemyIframe&&pagemyIframe.length>0){ pagemyIframe.one('load',parm,function(e){ var nagivJS=e&&e.data&&e.data.nagivJS?e.data.nagivJS:""; if(nagivJS.length>0&&nagivJS.toLowerCase()!="null") eval(nagivJS);//如果没有加载过,加载后也要执行跳转的函数 }) } } } showIframe(miframe); openoFrameWork.fixContentHeight(); // 调整高度 return true; } // 处理边栏菜单 var dealLiAClick=function(source){ if (source.next().hasClass('sub-menu') == false) { if ($('.btn-navbar').hasClass('collapsed') == false) { $('.btn-navbar').click(); } return; } if (source.next().hasClass('sub-menu always-open')) { return; } var parent = source.parent().parent(); var the = source; var menu = $('.page-sidebar-menu'); var sub = source.next(); var autoScroll = menu.data("auto-scroll") ? menu.data("auto-scroll") : true; var slideSpeed = menu.data("slide-speed") ? parseInt(menu.data("slide-speed")) : 200; parent.children('li.open').children('a').children('.arrow').removeClass('open'); parent.children('li.open').children('.sub-menu:not(.always-open)').slideUp(200); parent.children('li.open').removeClass('open'); var slideOffeset = -200; if (sub.is(":visible")) { $('.arrow', source).removeClass("open"); source.parent().removeClass("open"); sub.slideUp(slideSpeed, function () { if (autoScroll == true && $('body').hasClass('page-sidebar-closed') == false) { if ($('body').hasClass('page-sidebar-fixed')) { } else { dealScrollTo(the, slideOffeset); } } dealSidebarAndContentHeight(); }); } else { $('.arrow', source).addClass("open"); source.parent().addClass("open"); sub.slideDown(slideSpeed, function () { if (autoScroll == true && $('body').hasClass('page-sidebar-closed') == false) { if ($('body').hasClass('page-sidebar-fixed')) { dealScrollTo(the, slideOffeset); } } dealSidebarAndContentHeight(); }); } } var dealSidebarMenu = function () {//这里注册和处理边栏菜单的各类点击事件 $('.page-sidebar').on('click', 'li > a', function (e) { if ($(this).next().hasClass('sub-menu') == false) { if ($('.btn-navbar').hasClass('collapsed') == false) { $('.btn-navbar').click(); } return; } if ($(this).next().hasClass('sub-menu always-open')) { return; } dealLiAClick($(this)); e.preventDefault(); }); // 处理左边导航中的菜单连接,显示在iframe中 $('.page-sidebar').on('click', ' li > a.iframe', function (e) { //dealMenuItemClick($(this),e,"page-sidebar") e.preventDefault(); var menuItemID=$(this).attr("id"); if(!!menuItemID&&menuItemID.length>0){ _setLocationHash(menuItemID); _hashSource="dhByInterface"; }//else{ _isClicked=true; dealMenuItemClick($(this),e,"page-sidebar"); //} }); // 处理更多菜单的菜单连接,显示在iframe中dropdown-menu $('.page-breadcrumb').on('click', ' li > a.iframe', function (e) { var url = $(this).attr("href"); if(url.length<2) return; e.preventDefault(); dealBreadcrumbBtnMenuItemClick($(this),e); }); // 处理可翻页更多菜单中的菜单连接,显示在iframe中dropdown-menu $('#pageableDiv').on('click', ' div > a.iframe', function (e) { var url = $(this).attr("href"); if(url.length<2) return; e.preventDefault(); dealBreadcrumbBtnMenuItemClick($(this),e); }); // 处理可翻页更多菜单中的菜单连接,显示在iframe中dropdown-menu $('#pageableDiv').on('click', ' li > a.iframe', function (e) { var url = $(this).attr("href"); if(url.length<2) return; e.preventDefault(); if(e.target){ var tg=$("span",e.target); tg=tg.length>0?tg[0]:e.target; $(".open a>div>span",e.target.parentNode.parentNode.parentNode.parentNode.parentNode).replaceWith(tg.outerHTML); } dealBreadcrumbBtnMenuItemClick($(this),e); }); // 处理header下拉菜单中的菜单连接,显示在iframe中 $('.dropdown').on('click', ' li > a.iframe', function (e) { var url = $(this).attr("href"); if(url.length<2) return; e.preventDefault(); dealScrollTo(); dealstartPageLoading(); dealIframe($(this),e) dealBreadcrumb($(this),false,e); }); } var getSceneURL=function(url){ if(url&&url.trim().length>0){ url=url.trim(); //url= _sceneURLRootPath=_sceneURLRootPath+url; } } var gurl="";//临时全局变量,存储当前加载的more菜单,如果加载过了,就不再加载了。下面的方法中会用到 var moreMenusisLoaded=true; var waittime=null; var getBreadcrumbRightButtons=function(url,e){ if (url.length<2){ return; } url=openoFrameWork.handlBaseURL(url); if (gurl==url){ if(e===true){ $('#pageableDiv').show(); }else if(e&&e.target&&e.currentTarget){ var defaultDisplay=$(e.target).attr("defaultDisplay"); defaultDisplay=(!defaultDisplay)?$(e.currentTarget).attr("defaultDisplay"):defaultDisplay; if(defaultDisplay&&defaultDisplay.trim()=="false"){ $('#pageableDiv').hide(); }else{ $('#pageableDiv').show(); } } return; }else{ gurl=url; clearMoreOperations(); } //处理e参数,注意e可能为null var breadmenuID=e&&e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:""; breadmenuID=breadmenuID.length<=0?(e&&e.breadcrumbBtnMenuItem&&e.breadcrumbBtnMenuItem.length>0?e.breadcrumbBtnMenuItem:""):breadmenuID; moreMenusisLoaded=false; $.ajax({ type: "GET", cache: false, url: url, dataType: "html", success: function (res) { try{ //$('.page-breadcrumb').append(res); var resScriptsSriped = stripHtmlScripts(res); //$('.page-breadcrumb').append(resScriptsSriped); $('.more-botton-zone').children().remove(); //V5新增逻辑,如果displayType = pageableDiv,那么就用滑动的DIV来显示更多菜单里面的内容,如果没有配置,或为其他值,就按原有方式显示 var tempDiv = $('
'); tempDiv.children().remove(); tempDiv.append(resScriptsSriped); //获取UL属性 var displayType = $('.dropdown-menu',tempDiv).attr('displayType'); if( displayType && displayType != 'pageableDiv'){ $('.more-botton-zone').append(resScriptsSriped); $('#pageableDiv').hide(); }else{ var tempUl = $('.dropdown-menu',tempDiv); if(tempUl.length>0){ moreOperations(tempUl[0]); if(e&&e.target&&e.currentTarget){ var defaultDisplay=$(e.target).attr("defaultDisplay"); defaultDisplay=(!defaultDisplay)?$(e.currentTarget).attr("defaultDisplay"):defaultDisplay; if(defaultDisplay&&defaultDisplay.trim()=="false"){ $('#pageableDiv').hide(); }else{ $('#pageableDiv').show(); } } } } runHtmlScripts(res); }catch(ex){ }finally{ moreMenusisLoaded=true; } groupButtonAuthentication(); if(breadmenuID.length>0){//面包削导航来的,只需要重新生成面包削即可 var menuitem=undefined; var panel = $('.zte-theme-panel'); var navPosOption = $('.nav-pos-direction', panel).val(); //var items=$("a[id='"+breadmenuID+"']"); var items = undefined; if (navPosOption === "vertical"){ //从垂直菜单里面找 items=$("#page-sidebar-menu a[id='"+breadmenuID+"']"); }else{//从水平菜单里面找 items=$(".hor-menu a[id='"+breadmenuID+"']"); } if (!items || items.length < 1) { items=$(".page-content a[id='"+breadmenuID+"']"); } if(items.length>0){ for(var i=0;i0) dealBreadcrumbBtnMenuItemClick(menuitem,e); } }, error: function (xhr, ajaxOptions, thrownError) {//加载操作菜单失败!com_zte_ums_ict_framework_ui_loadmenuerror $('.page-breadcrumb').append('

'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'

'); moreMenusisLoaded=true; } }); } //处理多tab也场景 ----redirect 该标签暂时保留,不建议使用了 dealMultTabPage=function(clickedObject){ var url = clickedObject.attr("href"); if(!url||url.length<2) return; var redirect=clickedObject.attr("redirect"); //处理多tab页面的需求 if (!!redirect&&redirect.length>0){ var miframe=_iframe==""?"page-mainIframe": _iframe; var pagemyIframe=$('.page-content .page-content-body .'+miframe); //.page-mainIframe //var pagemyIframe=$('.page-content .page-content-body .page-mainIframe'); var oldhref=""; if(pagemyIframe&&pagemyIframe.length>0){ oldhref=pagemyIframe.attr("src"); if(url.split("?")[0]==oldhref.split("?")[0]) { eval(redirect); dealBreadcrumb(clickedObject,false,e); return true; } } }; return false; }; //处理主菜单面包削导航 var globleCurrentBreadcrumb=""; var globleCurrentMainMenuItemID=""; var dhByBreadcrumb = false; var dealBreadcrumb=function(clickedObject,notGenUID,e){//notGenUID为true就不重新生成id var mbreadcrumb=$('.breadcrumbUl'); openoFrameWork.setPageTitle(clickedObject.find('span').text().trim()); var clieckedObj= clickedObject.parent('li'); if(clieckedObj.length == 0){ //分页式更多菜单,a链接的父亲是div clieckedObj= clickedObject.parent('div'); } //如果点击的是F菜单的竖菜单,还需要找到横菜单上的对应父亲加入到clieckedObj var navPosOption = $('.nav-pos-direction', panel).val(); var parentid = clickedObject.attr('hparentid'); var breadcrumGroupButtonSrc=clickedObject.attr("breadcrumGroupButtonSrc"); globleCurrentMainMenuItemID=clickedObject.attr("id"); var mhmtl=""; var url=""; var tempObj=null; //var breadChangeType = e? (e.data ? e.data.breadChangeType:null):null; if( dhByBreadcrumb ){ mhmtl = dealClickBreadcrumb(clieckedObj); dhByBreadcrumb = ""; }else{ while (clieckedObj&&clieckedObj.length>0){ if(clieckedObj.children('a')){ if(!notGenUID){ url=openoFrameWork.getUniqueID("aid");//+Math.floor(Math.random() * (new Date()).getTime()); clieckedObj.children('a').attr("name",url); }else{ url=clieckedObj.children('a').attr("name"); } tempObj=clieckedObj.clone(); tempObj.children('a').removeClass('iframe'); tempObj.children('a').removeClass('active'); tempObj.children('a').attr("href","javascript:openoFrameWork.goToURL('"+url+"');"); var arrowdown = $(".fa-angle-down", tempObj.children('a')); if (arrowdown) { arrowdown.remove(); } if(tempObj.children('a').length>0){ mhmtl=tempObj.children('a')[0].outerHTML+""+mhmtl; } //如果是F菜单和横菜单的子竖菜单点击,需要做特殊处理 if( clieckedObj.parent('ul').attr('id') == fMenuSiderDivId || clieckedObj.parent('ul').attr('id') == megaSiderDivId){ var id = clieckedObj.children( 'a' ).attr('hparentid'); //判断是F菜单还是横菜单 var megaMenu = null; if(navPosOption == openoFrameWork_menu_horizontal){ magaMenu = $('#'+megaDivId); }else if(navPosOption == openoFrameWork_menu_fmenu){ magaMenu = $('#'+fMenuMegaDivId); } clieckedObj = $("a[id=" + id + "]" , magaMenu).parent('li'); }else{ clieckedObj=clieckedObj.parents('li'); } } } if(clieckedObj[0]&&clieckedObj[0].length>0) { mhmtl=clieckedObj.children('a')[0].outerHTML+""+mhmtl; } } mbreadcrumb.empty(); $('.more-botton-zone').empty(); globleCurrentBreadcrumb=mhmtl; store("globleCurrentBreadcrumb",globleCurrentBreadcrumb); mbreadcrumb.append(mhmtl); if(breadcrumGroupButtonSrc&&breadcrumGroupButtonSrc.length>0){ getBreadcrumbRightButtons(breadcrumGroupButtonSrc,e); }else{ $('#pageableDiv').hide(); } }; //面包屑发起的点击,就不重新生成面包屑,只是把该面包屑的后续节点移出。 var dealClickBreadcrumb = function(clieckedObj){ var index = globleCurrentBreadcrumb.indexOf(clieckedObj.children('a').attr("name")); if( index > -1 ){//截取 var indexofSign = globleCurrentBreadcrumb.indexOf("",index); var newBreadcrumb = globleCurrentBreadcrumb.substring(0,indexofSign) + ""; return newBreadcrumb; } } //处理面包削中菜单点击后的导航(更多菜单的面包屑) var dealBreadcrumbBtnGroupMenus=function(clickedObject,notGenUID , e ){ var mbreadcrumb=$('.breadcrumbUl'); var clieckedObj= clickedObject.parent(); var breadcrumGroupButtonSrc=clickedObject.attr("breadcrumGroupButtonSrc"); var mhmtl=""; var url=""; var tempObj=null; var menuid=clickedObject.attr("id"); if (!breadcrumbBtnMenus.contains(menuid)) {//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来 breadcrumbBtnMenus.add(menuid,globleCurrentMainMenuItemID); } while (clieckedObj&&clieckedObj.length>0){ tempObj=clieckedObj.clone(); if(tempObj.children('a')){ tempObj.children('a').removeClass('iframe'); url=tempObj.children('a').attr("href"); tempObj.children('a').attr("onclick","openoFrameWork.openbreadcrumbLink($(this),event);"); var tempdiv = tempObj.children('a').children('div'); if( tempdiv.length > 0 ){ var innerofDiv = tempdiv[0].innerHTML; tempdiv.remove(); tempObj.children('a')[0].innerHTML = innerofDiv; } if(tempObj.children('a').length>0){ mhmtl=tempObj.children('a')[0].outerHTML+""+mhmtl; } clieckedObj=clieckedObj.parents('li'); } } if(clieckedObj[0]&&clieckedObj[0].length>0) { mhmtl=clieckedObj.children('a')[0].outerHTML+""+mhmtl; } if(breadcrumGroupButtonSrc&&breadcrumGroupButtonSrc.length>0){ getBreadcrumbRightButtons(breadcrumGroupButtonSrc,true); }else{ $('#pageableDiv').hide(); } mbreadcrumb.empty(); var category= clickedObject.attr("category");//处理菜单中定义的Category属性 if(category&&category.length>0){//处理Category属性 var newIpPort=_menuCategorys.items(category); if(newIpPort&&newIpPort.ipTitle&&newIpPort.ipTitle.trim()!=""){//如果找到了 mhmtl=newIpPort.ipTitle+''+mhmtl; } } mhmtl=globleCurrentBreadcrumb+mhmtl; mbreadcrumb.append(mhmtl); }; var isMoreMenuItemClick = false; var dealBreadcrumbBtnMenuItemClick=function(clickObj,e){ dealScrollTo(); var menuItemID=clickObj.attr("id"); if(!!menuItemID&&menuItemID.length>0){ _setLocationHash(menuItemID); var breadmenuID=e&&e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:""; _hashSource=breadmenuID&&breadmenuID.length>0?"":"dhByInterface";//hash进来的,不是导航进来的。 } if(!(e&&e.breadcrumbBtnMenuItem&&e.breadcrumbBtnMenuItem.length>0)){//如果仅仅是tab跳转设置bread进来的,就框架不处理菜单点击,直接重新建立bread即可 dealstartPageLoading(); dealIframe(clickObj,e); } dealBreadcrumbBtnGroupMenus(clickObj,false,e); } // 固定边栏布局时计算边栏高度. var _calculateFixedSidebarViewportHeight = function () { var viewport = _getViewPort(); var sidebarHeight =viewport.height - $('.header').height() + 1; if ($('body').hasClass("page-footer-fixed")) { sidebarHeight = sidebarHeight - (!$('.footer')||$('.footer').length<=0)?0:$('.footer').outerHeight(); } return sidebarHeight; } // 处理固定边栏 var dealFixedSidebar = function () { var menu = $('.page-sidebar-menu'); if (menu.parent('.slimScrollDiv').size() === 1) { menu.removeAttr('style'); $('.page-sidebar').removeAttr('style'); } if ($('.page-sidebar-fixed').size() === 0) { dealSidebarAndContentHeight(); return; } var viewport = _getViewPort(); if (viewport.width >= openoFrameWork_smallView) { var sidebarHeight = _calculateFixedSidebarViewportHeight(); dealSidebarAndContentHeight(); } } // 固定边栏时处理菜单 hover 效果. var dealFixedSidebarHoverable = function () { if ($('body').hasClass('page-sidebar-fixed') === false) { return; } $('.page-sidebar').off('mouseenter').on('mouseenter', function () { dealSiderBarMouseenter(); }); $('.page-sidebar').off('mouseleave').on('mouseleave', function () { dealSiderBarMouseLeave(); }); } var dealSiderBarMouseenter=function(){ var body = $('body'); var siderbar=$('.page-sidebar'); if ((body.hasClass('page-sidebar-closed') === false || body.hasClass('page-sidebar-fixed') === false) || $(this).hasClass('page-sidebar-hovering')) { return; } body.removeClass('page-sidebar-closed').addClass('page-sidebar-hover-on'); var siderbartoggle=$('.sidebar-toggler'); if (body.hasClass("page-sidebar-reversed")) { siderbar.width(_sidebarWidth); dealSiderBarWidthChange(); } else { siderbar.addClass('page-sidebar-hovering'); siderbar.animate({ width: _sidebarWidth }, 350, '', function () { siderbar.removeClass('page-sidebar-hovering'); dealSiderBarWidthChange(); }); } } var dealSiderBarMouseLeave=function(){ var body = $('body'); if ((body.hasClass('page-sidebar-hover-on') === false || body.hasClass('page-sidebar-fixed') === false) || $(this).hasClass('page-sidebar-hovering')) { return; } var siderbar=$('.page-sidebar'); var siderbartoggle=$('.sidebar-toggler'); if (body.hasClass("page-sidebar-reversed")) { body.addClass('page-sidebar-closed').removeClass('page-sidebar-hover-on'); siderbar.width(_sidebarCollapsedWidth); if(siderbartoggle){ siderbartoggle.removeAttr('style'); } dealSiderBarWidthChange(); } else { siderbar.addClass('page-sidebar-hovering'); siderbar.animate({ width: _sidebarCollapsedWidth }, 350, '', function () { body.addClass('page-sidebar-closed').removeClass('page-sidebar-hover-on'); dealSiderBarWidthChange(); siderbar.removeClass('page-sidebar-hovering'); if(siderbartoggle){ siderbartoggle.removeAttr('style'); } }); } } //处理style css var dealAddStyle=function(element, property, value, important) { var styleText=element.attr('style')?element.attr('style'):""; styles=styleText.split(";"); var find=""; for(i=0;i=0){ find=styles[i];//看是否已经添加过,如果添加过就需要替换掉 break; } } styleText=find.length>0?styleText.replace(find,""):styleText; styleText=(styleText + ';'+property + ':' + value + ((important) ? ' !important' : '') + ';').replace(/;;/g,";"); element.attr('style',styleText ); } var dealSiderBarWidthChange=function(){ } // 处理边栏菜单切换时的关闭和隐藏. var dealSidebarToggler = function () { var viewport = _getViewPort(); if (getCookie('sidebar_closed') === '1' && viewport.width >= openoFrameWork_smallView) { $('body').addClass('page-sidebar-closed'); } $('.page-sidebar, .sidebar-toggler').on('click', '.sidebar-toggler', function (e) { e.preventDefault(); var body = $('body'); var sidebar = $('.page-sidebar'); if(body.hasClass('page-sidebar-closed')){ $(this).removeAttr('style'); } } ); $('.page-sidebar, .header').on('click', '.sidebar-toggler', function (e) { var body = $('body'); var sidebar = $('.page-sidebar'); if ((body.hasClass("page-sidebar-hover-on") && body.hasClass('page-sidebar-fixed')) || sidebar.hasClass('page-sidebar-hovering')) { body.removeClass('page-sidebar-hover-on'); sidebar.css('width', '').hide().show(); dealSidebarAndContentHeight(); //fix content & sidebar height setCookie('sidebar_closed', '0'); dealSiderBarWidthChange(); e.stopPropagation(); runResponsiveHandlers(); return; } $(".sidebar-search", sidebar).removeClass("open"); var panel = $('.zte-theme-panel'); var sidebarPosOption = $('.sidebar-pos-option', panel).val(); var pcontent = $("[class='page-content']"); if (body.hasClass("page-sidebar-closed")) { body.removeClass("page-sidebar-closed"); if (body.hasClass('page-sidebar-fixed')) { sidebar.css('width', ''); } setCookie('sidebar_closed', '0'); pcontent.css("marginLeft",_sidebarWidth); dealSiderBarWidthChange(); } else { body.addClass("page-sidebar-closed"); $(this).removeAttr('style'); setCookie('sidebar_closed', '1'); pcontent.css("marginLeft", _sidebarCollapsedWidth); dealSiderBarWidthChange(); } //针对侧边栏伸缩的情况需加入对.page-content的判断。 dealSidebarAndContentHeight(true); runResponsiveHandlers(); }); } // 处理水平菜单 var dealHorizontalMenu = function () { $('.header').on('click', '.hor-menu .hor-menu-search-form-toggler', function (e) { if ($(this).hasClass('off')) { $(this).removeClass('off'); $('.header .hor-menu .search-form').hide(); } else { $(this).addClass('off'); $('.header .hor-menu .search-form').show(); } e.preventDefault(); }); // 处理水平菜单 处理header下拉菜单中的菜单连接,显示在iframe中 $('.header').on('click', ' li > a.iframe', function (e) { //dealMenuItemClick($(this),e,"header"); e.preventDefault(); var menuItemID=$(this).attr("id"); if(!!menuItemID&&menuItemID.length>0){ _setLocationHash(menuItemID); _hashSource="dhByInterface"; }//else{ _isClicked=true; dealMenuItemClick($(this),e,"header"); //} }); //处理TAB点击 $('.header').on('click', '.hor-menu a[data-toggle="tab"]', function (e) { e.preventDefault(); var nav = $(".hor-menu .nav"); var active_link = nav.find('li.current'); $('li.active', active_link).removeClass("active"); $('.selected', active_link).remove(); var new_link = $(this).parents('li').last(); new_link.addClass("current"); new_link.find("a:first").append(''); }); } // 增加一个对服务端的心跳 var doHeartbeat = function() { //心跳超时次数 var heartBeatTimes = 0; return setInterval(function() { var userName; if( userName == null ){ var userName = openoFrameWork_conf.userName; } var heartUrl = FrameConst.REST_HEARTBEAT + "?username=" + encodeURIComponent(userName); $.ajax(heartUrl, { dataType : "text", cache : false }).done(function(data) { // if (data != "true") { //收到不属于取值范围内的回复,说明出现不可预知情况,取消心跳。是原framework.js中的逻辑,比较奇怪,先保留注释。 // disableHeartbeat(); // } //收到心跳回应消息,心跳超时次数置0 if( data == "true" ){ heartBeatTimes = 0; } }); heartBeatTimes++; //心跳超时6次即1分钟,转到登录界面,认为链路断。 if(heartBeatTimes >= 6){ disableHeartbeat(); //console.log(com_zte_ums_aos_framework_ui_heartbeat_timeout); bootbox.alert($.i18n.prop('com_zte_ums_aos_framework_ui_heartbeat_fail'), function () { window.location.replace("login.html"); }); } }, 10000); }; if( FrameConst.do_heartbeat ){ var heartbeatTimer = doHeartbeat(); } window.enableHeartbeat = function() { if (!heartbeatTimer) { //重新启动心跳功能,心跳超时次数置0 heartBeatTimes = 0; heartbeatTimer = doHeartbeat(); return "Enabled"; } return "Already enabled!"; }; window.disableHeartbeat = function() { if (heartbeatTimer) { clearInterval(heartbeatTimer); heartbeatTimer = null; return "Disabled"; } return "Already disabled!"; }; window.doLogout = function(){ logoutSubmit(); }; //处理ict注销确认 $('#trigger_logout').click(function(){ bootbox.confirm($.i18n.prop('com_zte_ums_ict_framework_ui_confirmlogout'), function(result) { //你确认要注销吗? if(result){ doLogout(); } }); }); // Handle full screen mode toggle var isscreenFull=false; var dealFullScreenMode = function() { // 处理全屏事件 function toggleFullScreen() { if(!screenfull.supportsFullScreen){//不支持全屏 if (isIE&&typeof window.ActiveXObject !== "undefined") { // Older IE. var wscript = new ActiveXObject("WScript.Shell"); if (wscript !== null) { wscript.SendKeys("{F11}"); isscreenFull=!isscreenFull; } }else{ isscreenFull=screenfull.supportsFullScreen; }; }else{ screenfull.isFullScreen?screenfull.exitFullScreen():screenfull.requestFullScreen(); isscreenFull= screenfull.isFullscreen; } setTimeout(function(){ if(isscreenFull){ $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_exitfullscreen')); }else{ $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen')); } },500); } $('#trigger_fullscreen').click(function() { toggleFullScreen(); }); } //清理当前正在显示的iframe之外缓存的iframe, var dealClearCachedIframes=function(isall){ if (cachedIframes.count()>0) { for (var i in cachedIframes.hash()) { var pagemyIframe=$('.page-content .page-content-body .'+i); if(pagemyIframe&&pagemyIframe.length>0){ if(isall==true){ pagemyIframe.attr("src",""); pagemyIframe.remove(); }else if(i!=_iframe) pagemyIframe.attr("src",""); pagemyIframe.remove(); } } } cachedIframes.clear(); if (cachedIframesObject.count()>0) {//清理缓存的iframe实体对象。 for (var i in cachedIframesObject.hash()) { if(i!=_iframe) cachedIframesObject.remove(i); } } } var lastSelectedLayout = ''; var dealTheme = function () { var panel = $('.zte-theme-panel'); if ($('body').hasClass('page-boxed') == false) { $('.layout-option', panel).val("fluid"); } $('.sidebar-option', panel).val("default"); $('.language-option', panel).val(defaultLanage); $('.header-option', panel).val("fixed"); $('.footer-option', panel).val("default"); if ( $('.sidebar-pos-option').attr("disabled") === false) { $('.sidebar-pos-option', panel).val(openoFrameWork.isRTL() ? 'right' : 'left'); } var _resetLayout = function () { dealResetLayout(); } var _setLayout = function () { dealSetLayout(); } var setColor = function (color) { var color_ = (openoFrameWork.isRTL() ? color + '-rtl' : color); $('#style_color').attr("href", ICTFRAME_CONST_THEME_COLOR_CSS_PREFFIX + color_ + ".css"); setCookie('style_color', color); syncColorCSS(); } $('.toggler', panel).click(function () { $('.toggler').hide(); $('.toggler-close').show(); $('.zte-theme-panel > .theme-options').show(); }); $('.toggler-close', panel).click(function () { $('.toggler').show(); $('.toggler-close').hide(); $('.zte-theme-panel > .theme-options').hide(); }); $('.theme-colors > ul > li', panel).click(function () { var color = $(this).attr("data-style"); setColor(color); $('ul > li', panel).removeClass("current"); $(this).addClass("current"); }); $('.layout-option,.header-option, .sidebar-option, .footer-option, .sidebar-pos-option, .nav-pos-direction', panel).change(_setLayout); if (getCookie('style_color') != undefined) { setColor(getCookie('style_color')); } $('.language-option', panel).change(function(){ var languageOption = $('.language-option', panel).val(); setCookie('language-option', languageOption); window.location.reload(); }); } var dealResetLayout = function () { $("body"). removeClass("page-boxed"). removeClass("page-footer-fixed"). removeClass("page-sidebar-fixed"). removeClass("page-header-fixed"). removeClass("page-sidebar-reversed"); $('.header > .header-inner').removeClass("container"); if ($('.page-container').parent(".container").size() === 1) { $('.page-container').insertAfter('body > .clearfix'); } if ($('.footer > .container').size() === 1) { $('.footer').html($('.footer > .container').html()); } else if ($('.footer').parent(".container").size() === 1) { $('.footer').insertAfter('.page-container'); } $('body > .container').remove(); } /* * 此方法在客户端初始化和设置面板上选择菜单方向的时候用。 * param navPosOption */ var dealNavPos = function(navPosOption) { // 横竖边栏切换功能禁用,则返回 var panel = $('.zte-theme-panel'); if ($('.nav-pos-direction', panel).attr("disabled") == "disabled") { return; } var sidermenu = $("#page-sidebar-menu"); var hormenu = $("#main_hormenu"); var sidermenu = $("#page-sidebar-menu"); var hormenu = $("#main_hormenu"); var horSiderMenu = $('#' + megaSiderDivId ); var fhorMenu = $("#" + fMenuMegaDivId); var fsiderMenu = $("#" + fMenuSiderDivId); var pcontent = $("[class='page-content']"); if (sidermenu && sidermenu.length > 0 && hormenu && hormenu.length > 0 && fhorMenu && fhorMenu.length > 0) { if (navPosOption === openoFrameWork_menu_horizontal) { sidermenu.css('display','none');// 侧边栏隐藏 fhorMenu.css('display','none'); fsiderMenu.css('display','none'); pcontent.css("marginLeft",0); $("body").addClass("page-full-width");//调整内容显示 hormenu.css("display", "block");//显示水平菜单栏 // 导航位置为水平菜单时,边栏和边栏位置为默认和靠左,且将其切换功能禁用掉 $('.sidebar-option', panel).val("default"); $('.sidebar-option', panel).attr("disabled", true); $('.sidebar-pos-option', panel).val("left"); $('.sidebar-pos-option', panel).attr("disabled", true); } else if (navPosOption === openoFrameWork_menu_vertical ) { $("body").removeClass("page-full-width"); sidermenu.css('display','block');//侧边栏显示 var body = $('body'); if (body.hasClass("page-sidebar-closed")) { pcontent.css("marginLeft", _sidebarCollapsedWidth); } else { pcontent.css("marginLeft", _sidebarWidth); } hormenu.css("display", "none");//隐藏水平菜单栏 fhorMenu.css('display','none'); fsiderMenu.css('display','none'); horSiderMenu.css('display','none'); $('.sidebar-option', panel).attr("disabled", false); $('.sidebar-pos-option', panel).attr("disabled", false); } else if(navPosOption === openoFrameWork_menu_fmenu ){ sidermenu.css('display','none');// 侧边栏隐藏 hormenu.css("display", "none");//隐藏水平菜单栏 fsiderMenu.css('display','none'); fhorMenu.css('display','block'); pcontent.css("marginLeft",0); $("body").addClass("page-full-width");//调整内容显示 // 导航位置为水平菜单时,边栏和边栏位置为默认和靠左,且将其切换功能禁用掉 $('.sidebar-option', panel).val("default"); $('.sidebar-option', panel).attr("disabled", true); $('.sidebar-pos-option', panel).val("left"); $('.sidebar-pos-option', panel).attr("disabled", true); } } } var dealSetLayout = function(){ var panel = $('.zte-theme-panel'); var layoutOption = $('.layout-option', panel).val(); var languageOption = $('.language-option', panel).val(); var headerOption = $('.header-option', panel).val(); var footerOption = $('.footer-option', panel).val(); var navPosOption = $('.nav-pos-direction', panel).val(); dealNavPos(navPosOption); var sidebarOption = $('.sidebar-option', panel).val(); var sidebarPosOption = $('.sidebar-pos-option', panel).val(); if (sidebarOption == "fixed" && headerOption == "default") { alert($.i18n.prop('com_zte_ums_ict_framework_ui_fixedsidedefaultheaderError')); //页头不支持固定边栏,先固定页头才能固定边栏. $('.header-option', panel).val("fixed"); $('.sidebar-option', panel).val("fixed"); sidebarOption = 'fixed'; headerOption = 'fixed'; } if (sidebarOption == "fixed" && sidebarPosOption == "right") { alert($.i18n.prop('com_zte_ums_ict_framework_ui_fixedsiderightpositionError')); //固定边栏情况下,边栏不能靠右。. $('.sidebar-pos-option', panel).val("left"); sidebarPosOption = 'left'; } dealResetLayout(); // reset layout to default state if (layoutOption === "boxed") { $("body").addClass("page-boxed"); // set header $('.header > .header-inner').addClass("container"); var cont = $('body > .clearfix').after('
'); // set content $('.page-container').appendTo('body > .container'); // set footer if (footerOption === 'fixed') { $('.footer').html('
' + $('.footer').html() + '
'); } else { $('.footer').appendTo('body > .container'); } } if (lastSelectedLayout != layoutOption) { runResponsiveHandlers(); } lastSelectedLayout = layoutOption; //header if (headerOption === 'fixed') { $("body").addClass("page-header-fixed"); $(".header").removeClass("navbar-static-top").addClass("navbar-fixed-top"); } else { $("body").removeClass("page-header-fixed"); $(".header").removeClass("navbar-fixed-top").addClass("navbar-static-top"); } //sidebar if ($('body').hasClass('page-full-width') === false) { if (sidebarOption === 'fixed') { $("body").addClass("page-sidebar-fixed"); } else { $("body").removeClass("page-sidebar-fixed"); } } //footer if (footerOption === 'fixed') { $("body").addClass("page-footer-fixed"); } else { $("body").removeClass("page-footer-fixed"); } //sidebar position if (openoFrameWork.isRTL()) { if (sidebarPosOption === 'left') { $("body").addClass("page-sidebar-reversed"); $('#frontend-link').tooltip('destroy').tooltip({placement: 'right'}); } else { var pcontent = $("[class='page-content']"); pcontent.css("marginLeft",0);//侧边栏靠右,则左边内容填充为0 $("body").removeClass("page-sidebar-reversed"); $('#frontend-link').tooltip('destroy').tooltip({placement: 'left'}); } } else { if (sidebarPosOption === 'right') { var pcontent = $("[class='page-content']"); pcontent.css("marginLeft",0);//侧边栏靠右,则左边内容填充为0 $("body").addClass("page-sidebar-reversed"); $('#frontend-link').tooltip('destroy').tooltip({placement: 'left'}); } else { $("body").removeClass("page-sidebar-reversed"); $('#frontend-link').tooltip('destroy').tooltip({placement: 'right'}); } } dealSidebarAndContentHeight(); dealFixedSidebar(); dealFixedSidebarHoverable(); dealSiderBarWidthChange(); setCookie('layout-option', layoutOption); setCookie('language-option', languageOption); setCookie('header-option', headerOption); setCookie('sidebar-option', sidebarOption); setCookie('sidebar-pos-option', sidebarPosOption); setCookie('nav-pos-direction', navPosOption); } var setCookie = function (key, value) { if (store) { store(key, value); } } var getCookie = function (key) { if (store) { return store(key); } else { return undefined; } } /*下面处理前进后退和锚点访问*/ var _getLocationHash = function() { return location.hash.replace("#_", ""); } /*统一入口设置锚点*/ var _setLocationHash = function(menuItemID) { location.hash = getLocationHashByMenuId(menuItemID); } var getLocationHashByMenuId = function(menuItemID){ return "#_" + menuItemID; } // hash control var loadCurrentHash = function(e,data){ var locationhash = _getLocationHash(); //important if(!!locationhash&&locationhash.length>0){ if(_hashSource.trim()=="dhByInterface"){ _hashSource=""; }else{ processChangedHash(locationhash,data); } } } // hash control 这种写法安全点 var processChangedHash = function(path) { var id = path; var action = undefined; var spIndex = path.indexOf("/"); if(spIndex != -1) { id = path.substring(0,spIndex); action = path.substring(spIndex+1); } openoFrameWork.goToURLByIDAndNewAction(id,action); } var syncColorCSS=function(){//注册皮肤切换事件处理函数,处理iframe中的皮肤切换 var pagemyIframe=null; if (cachedIframes.count()>0) { for (var i in cachedIframes.hash()) { pagemyIframe=$('.page-content .page-content-body .'+i); if(pagemyIframe&&pagemyIframe.length>0){ openoFrameWork.SyncCSS(pagemyIframe[0],1,""); } } } } var getCurrentVisibleIframe=function(){ var pagemyIframe=null; if (cachedIframes.count()>0) { for (var i in cachedIframes.hash()) { if(cachedIframes.items(i)===1){ pagemyIframe=$('.page-content .page-content-body .'+i); } } } return pagemyIframe; } //处理跨域请求代理,通过该代理进行iframe间传递参数,注意这里的代理页面proxy.html必须部署到要跨域的对端域的服务器web根目录下 var dealCrossProxy=function(ifrm,crossproxysrc,ifmHeadlins,flag){//crossproxysrc这个是proxy.html对应的url根路径 var url=$.url(openoFrameWork.getCurrentScript(document)); var proxyHtmlPath=url.attr("directory")+"proxy/proxy.html"//这中情况适用于使用了该界面集成框架的应用系统 var _ifmProxy=$(''); var _ifm=$('#ifm_Proxy'); _ifm.hide(); var pageContentBody=$('.page-content .page-content-body'); var linksrcs=new Array(); var linksids=new Array(); var linktyps=new Array(); var _src=""; for (i=0;i0){ _src=ifmHeadlins[i].link.src; linktyps.push("javascriptfile"); }else{ _src=ifmHeadlins[i].link.text; linktyps.push("javascripttext"); } }else{ linktyps.push("undefined"); } linksrcs.push(_src); linksids.push({"pos":ifmHeadlins[i].pos,"scope":ifmHeadlins[i].scope,"id":ifmHeadlins[i].link.id}); } var parm={iFrame:ifrm,cssLinktyps:linktyps,cssLinksrcs:linksrcs,cssLinkids:linksids,origin:crossproxysrc,flag:flag}; if(_ifm&&_ifm.length<=0){//没有添加过 _ifmProxy.appendTo(pageContentBody); _ifmProxy.one('load',parm,function(e){ var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag}; $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin }); }else if(_ifm.attr("oldproxyorigin")!=crossproxysrc){//代理已经添加过了,看是否是同一个网站的代理,如果不是需要重新加载 _ifm.attr("src",""); _ifm.attr("oldproxyorigin",crossproxysrc); _ifm.one('load',parm,function(e){ var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag}; $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin }); _ifm.attr("src",_ifmProxy.attr("src")); }else{//已经添加过,直接触发消息发送即可 var data={iFrame:parm.iFrame,cssLinktyps:parm.cssLinktyps,cssLinksrcs:parm.cssLinksrcs,cssLinkids:parm.cssLinkids,flag:flag}; _ifm[0].contentWindow.postMessage(data,parm.origin);//window.location.origin } } return { init: function () { if(zte_http_headers){ store("zte_http_headers",zte_http_headers); } dealInit(); dealResponsiveOnResize(); dealResponsiveOnInit(); dealClearCachedIframes(true); ////清理当前正在显示的iframe之外缓存的iframe, breadcrumbBtnMenus.clear(); dealFixedSidebar(); // deals fixed sidebar menu dealFixedSidebarHoverable(); // deals fixed sidebar on hover effect dealSidebarMenu(); // deals main menu dealHorizontalMenu(); // deals horizontal menu dealSidebarToggler(); // deals sidebar hide/show dealTheme(); // deals style customer tool dealSetLayout(); $(function() { $(window).on('hashchange',function(){ loadCurrentHash(); }); }); dealFullScreenMode(); // deals full screen $("#header_dropdown_user").css('display','block'); $("#com_zte_ums_ict_framework_img_netnumenLogo").css('display','inline'); $("#com_zte_ums_ict_framework_ui_main_title").css('display','inline'); handeCtxMenuitem(); }, //公开清理缓存的所有Iframe的方法:isALL==true则清理所有,否则清理当前正在显示的iframe之外缓存的iframe,。 clearCachedIframes:function(isAll){ dealClearCachedIframes(isAll); }, setBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 if (store) { store('baseURLRoot', ipportStr); } var url = $.url(ipportStr); location.hash=url.attr('fragment'); var auth=url.attr('query'); if (store) { store('baseURLRootAuth', auth); } }, getBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 var rooturl=""; if (store) { rooturl=store('baseURLRoot'); } return !rooturl?"":rooturl; }, clearBaseURLRoot:function(){//菜单url的跟ip和端口例如:http://10.74.151.122:21180 if (store) { store('baseURLRoot', "",-1); } }, setPageTitle:function(title){//设置页面标题 $('title').html(title+" - "+gdocTitle); }, getLanguage:function(){//获取语言 return openoFrameWork_conf.acceptLanguage; }, getLocationHash:function(){ return _getLocationHash(); }, setSceneURLRootPath:function(sceneURLRootPath){ if(sceneURLRootPath&&sceneURLRootPath.trim().length>0){//如果定义了场景的全局参数 _sceneURLRootPath=sceneURLRootPath.trim(); if(_sceneURLRootPath.charAt(_sceneURLRootPath.length-1)!='/') { _sceneURLRootPath=_sceneURLRootPath+'/'; } } }, //public function to add callback a function which will be called on window resize addResponsiveHandler: function (func) { responsiveHandlers.push(func); }, hiddenAlarmLight:function(){ hideAlarmLight(); }, hiddenMenu:function(){ hidemenu(); }, setBreadcrumbByMenuID:function(id){ //var breaditem=$('#'+id); var menuitem=undefined; // var items=$("a[id='"+id+"']"); var items = undefined; var panel = $('.zte-theme-panel'); var navPosOption = $('.nav-pos-direction', panel).val(); if (navPosOption === "vertical"){ //从垂直菜单里面找 items=$("#page-sidebar-menu a[id='"+id+"']"); if (!items || items.length < 1) { items=$(".page-content a[id='"+id+"']"); } }else if(navPosOption === openoFrameWork_menu_horizontal){//从水平菜单里面找 items=$("#main_hormenu a[id='"+id+"']"); if(items.length == 0){ //横菜单没有找到,再在横菜单的子菜单找一次 items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); } }else if(navPosOption === openoFrameWork_menu_fmenu){ items=$("#f_hormenu a[id='"+id+"']"); if(items.length == 0){ //横菜单没有找到,再在竖菜单找一次。 items=$("#page-f-sidebar-menu a[id='"+id+"']"); } } var isbreadcrumbMenuItem=false; if(items.length>0){ for(var i=0;i0){ if(isbreadcrumbMenuItem){ dealBreadcrumbBtnGroupMenus(menuitem,false); }else{ dealBreadcrumb(menuitem,true,null); } }else{ var breadcrumbBtnMenuItemParent=""; if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 var menuItemID=id; if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 breadcrumbBtnMenuItemParent="#"+breadcrumbBtnMenus.items(menuItemID); menuitem=$(breadcrumbBtnMenuItemParent); //_breadcrumbSource=true; } } var parm=undefined; if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ parm={breadcrumbBtnMenuItem:menuItemID}; } if(parm&&menuitem&&menuitem.length>0) { dealBreadcrumb(menuitem,true,parm); } } }, setSiderbarCollapseWidth:function(width){ _sidebarCollapsedWidth = width; }, getSiderbarCollapseWidth:function(){ return _sidebarCollapsedWidth; }, setSidebarWidth:function(width){ _sidebarWidth = width; }, getSidebarWidth:function(){ return _sidebarWidth; }, //2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息 handlBaseURL:function(url){ var baseURLRoot=openoFrameWork.getBaseURLRoot(); if (baseURLRoot.length>0) {//2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息 baseURLRoot=openoFrameWork.getDomainURL(baseURLRoot);//去掉ip和port后多余的部分 console.log("old a link href url:"+url); url=baseURLRoot+url.replace(openoFrameWork.getDomainURL(url),""); console.log("baseURLRoot:"+baseURLRoot+" newURL:"+url); }; return url; }, startPageLoading: function(message) { dealstartPageLoading(message); }, stopPageLoading: function() { dealstopPageLoading(); }, //public function to get a paremeter by name from URL getLocationURLParameter: function (paramName,separator) { var searchString = decodeURIComponent(window.location.search.substring(1)).toLowerCase(), i, val, params = searchString.split(separator?separator:"&"); paramName=paramName.toLowerCase(); for (i = 0; i < params.length; i++) { val = params[i].split("="); if (val[0] == paramName) { return unescape(val[1]); } } return null; }, //public function to get a paremeter by name from URL getURLParameter: function (paramName,url) { var searchString = decodeURIComponent(url).toLowerCase(), i, val, params = searchString.split("&"); paramName=paramName.toLowerCase(); for (i = 0; i < params.length; i++) { val = params[i].split("="); if (val[0] == paramName) { return unescape(val[1]); } } return null; }, // check for device touch support isTouchDevice: function () { return isTouch; }, getUniqueID: function(prefix) { return prefix+'_' + Math.floor(Math.random() * (new Date()).getTime()); }, // check IE8 mode isIE8: function () { return isIE8; }, // check IE9 mode isIE9: function () { return isIE9; }, //check RTL mode isRTL: function () { return isRTL; }, getViewPort:function(){ return _getViewPort(); }, // get layout color code by color name getLayoutColorCode: function (name) { if (layoutColorCodes[name]) { return layoutColorCodes[name]; } else { return ''; } } , fixContentHeight: function () { dealSidebarAndContentHeight(); }, dealAtoIframe:function(aObj,event){ var containerStr=aObj.parentsUntil('.page-container').hasClass('page-sidebar')?'page-sidebar':"";// containerStr=aObj.parentsUntil('.header-inner').hasClass('hor-menu')?'header':containerStr; dealMenuItemClick(aObj,event,containerStr); _isClicked=false; }, getDomainURL:function(urlAddress){ var url = $.url(urlAddress); var protocol=url.attr('protocol'); var host=url.attr('host'); var port=url.attr('port'); var crossOrign=protocol+"://"+host+(port.length>0?":"+port:""); return crossOrign; }, getCurrentScript:function(doc) {//doc为 document对象 /* 注意该功能在其他脚本中调用时出safari获取到的脚本路径为本方法所在脚本的路径, 其他浏览器获取到的为调用该方法的脚本所在路径 取得正在解析的script节点 */ if(doc&&doc.currentScript) { //firefox 4+ console.log("0、 "+doc.currentScript.src); return doc.currentScript.src; } // 参考 https://github.com/samyk/jiagra/blob/master/jiagra.js var stack; try { a.b.c(); //强制报错,以便捕获e.stack } catch(e) {//safari的错误对象只有line,sourceId 或者高版本还有sourceURL stack = e.stack; if(e.sourceURL){//safari 浏览器没有e.stack但有e.sourceURL stack=e.sourceURL; }else if(!stack && window.opera){ //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 stack = (String(e).match(/of linked script \S+/g) || []).join(" "); } console.log("1、 "+stack); } if(stack) { /*e.stack最后一行在所有支持的浏览器大致如下: *chrome23: * at http://113.93.50.63/data.js:4:1 *firefox17: *@http://113.93.50.63/query.js:4 *opera12: *@http://113.93.50.63/data.js:4 *IE10: * at Global code (http://113.93.50.63/data.js:4:1) */ console.log("2、 "+stack); stack = stack.split( /[@ ]/g).pop();//取得最后一行,最后一个空格或@之后的部分 stack = stack[0] == "(" ? stack.slice(1,-1) : stack; console.log("3、 "+stack); return stack.replace(/(:\d+)?:\d+$/i, "");//去掉行号与或许存在的出错字符起始位置 } if(doc){ var nodes = doc.getElementsByTagName("script"); //只在head标签中寻找 for(var i = 0, node; node = nodes[i++];) { if(node.readyState === "interactive") { console.log("4、 "+(node.className = node.src)); return node.className = node.src; } } } }, /*下面的flag为0表示默认不触发孙子iframe中的onload事件,为1表示要触发,flag为10则对cssSrc重复执行,其他不做重复执行*/ SyncCSS:function(ifrm,flag,cssSrc){//将主框架中的皮肤css应用到打开的iframe页面中 if(!ifrm)return; var ifmHeadlins = new Array(); if(cssSrc&&cssSrc.length>0&&cssSrc.endWith(".css")){ var _div = $(''); var csslink=document.createElement("link"); csslink.href=_div[0].href;//这里同步菜单定义中cssSrc属性指定的css文件到iframe _div = null; csslink.rel="stylesheet"; csslink.type="text/css"; csslink.id="ifram_csssrc"; ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体 } if(flag!=10){//当flag为10时下面的css和js都不执行 if($('#style_color').length>0){ var csslink=document.createElement("link"); csslink.href=$('#style_color')[0].href.replace(".css","_ifrm.css");//这里同步的皮肤页面修改为原皮肤页面文件名后缀添加ifrm的css皮肤文件 csslink.rel="stylesheet"; csslink.type="text/css"; csslink.id="style_color"; ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体 } // 将 font-awesome字体图标应用到模块iframe if($('#font_awesome').length>0){ var awesomelink=document.createElement("link"); awesomelink.href=$('#font_awesome')[0].href; awesomelink.rel="stylesheet"; awesomelink.type="text/css"; awesomelink.id="font_awesome"; ifmHeadlins.push({"pos":"head","scope":"all","link":awesomelink}); } // 将pym.js or pym.min.js应用到模块iframe var pymjsObj=$("script[src*='/pym.']");//模糊查找 pymjsObj=pymjsObj.length>0?pymjsObj:$("script[src*='/pym1.']"); if(pymjsObj.length>0){ var pymjs=document.createElement("script"); pymjs.src=pymjsObj[0].src; pymjs.type="text/javascript"; pymjs.id=!!pymjsObj[0].id?pymjsObj[0].id:"pymjs"; ifmHeadlins.push({"pos":"head","scope":"one","link":pymjs}); pymjs=document.createElement("script"); //pym脚本文件加载后要执行new pym.Child()进行iframe子窗体实例化,便于子窗体和父窗体通讯new pym.Child({ id: '"+_iframe+"' ,polling: 1000}) var frameid=(_iframe.split('-').length>0?_iframe.split('-')[1]:"1"); pymjs.text="var t1;function pmchd(){console.log('In the frame "+_iframe+",pym code call is begining; '+(typeof pym!= 'undefined'));if(typeof pym != 'undefined'){pymChild"+frameid+" = new pym.Child({ id: 'pdiv_"+_iframe+"' ,polling: 500});window.clearInterval(t1); }};t1 = window.setInterval(pmchd,5);"; pymjs.type="text/javascript"; pymjs.id="pymChild"; ifmHeadlins.push({"pos":"htmlend","scope":"one","link":pymjs}); } // 将hk.js or hk.min.js应用到模块iframe var hkjsObj=$("script[src*='/hk.']");//模糊查找 hkjsObj=hkjsObj.length>0?hkjsObj:$("script[src*='/hk1.']"); if(hkjsObj.length>0){ var hkjs=document.createElement("script"); hkjs.src=hkjsObj[0].src; hkjs.type="text/javascript"; hkjs.id=!!hkjsObj[0].id?hkjsObj[0].id:"hkjs"; ifmHeadlins.push({"pos":"head","scope":"one","link":hkjs}); hkjs=document.createElement("script"); ////hk.js 加载后拦截ajax请求进行转发 } } var crossOrign=openoFrameWork.getDomainURL(ifrm.src); if( window.location.origin==crossOrign){ //第一层同域处理 for (i=0;i0){ var ifmHeadlins2 = new Array(); for (i=0;i0){ console.log('跨域访问: 系统将进入跨域访问代理处理流程 '); dealCrossProxy(childifrms[j].name,childOrign,ifmHeadlins2,flag); } } } } }else{ if(ifmHeadlins.length>0){ console.log('跨域访问: 系统将进入跨域访问代理处理流程 '); dealCrossProxy(ifrm.name,crossOrign,ifmHeadlins,flag); } } }, goToURL:function(url){ dhByBreadcrumb = true;//全局变量,声明此次事件是由点击面包屑发起的 var showNav=openoFrameWork.getLocationURLParameter('showNav'); if(showNav=="false"){//如果不显示菜单,就强制刷新本页 location.reload(); }else{ url="a[name='"+url+"']"; $(url).click(); } }, goToURLByName:function(name){ var showNav=openoFrameWork.getLocationURLParameter('showNav'); if(showNav=="false"){//如果不显示菜单,就强制刷新本页 location.reload(); }else{ url="a[name='"+name+"']"; $(url).click(); } }, goToURLByID:function(id){ if(!id){ return; } var showNav=openoFrameWork.getLocationURLParameter('showNav'); if(showNav=="false"){//如果不显示菜单,就强制刷新本页 location.reload(); }else{ if(id.indexOf("#")<0){ id="#"+id; } $(id).click(); } }, goToPortal:function(id){ var _url=top.location.href; console.log(_url); //_url="/ngict/iui/framework/"; var url=$.url(_url); top.location=url.attr("directory")+"uifportal.html#"+id+"/"; }, //Category goToURLByIDAndNewIPPort:function(id,newIPPort,newActionStr){ //先把NewIPPort对象:newIPPort={menuCategoryID:'vim',ipPortStr:'htpp://10.74.151.123:31180',newTitle:''}缓存到Category数组中, //menuCategoryID属性是更多菜单上配置的菜单的分类id,; //ipPortStr属性是该id的菜单要替换的新的ip和端口地址字符串,包括协议部分,比如http://10.74.151.64:21169 //newTitle属性用于放置新开ip的页面对应到面包屑上的名字,可以为“”,空标识不关注 _menuCategorys.replace(newIPPort.menuCategoryID,{ipPort:newIPPort.ipPortStr,ipTitle:newIPPort.newTitle});//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来 if (store) { store('menuCategoryID', newIPPort.menuCategoryID+"[menuCategoryID]"+newIPPort.ipPortStr+"[menuCategoryID]"+(!!newIPPort.newTitle?newIPPort.newTitle:"")); } //这里增加按照newIPPort.menuCategoryID分类加载more菜单的处理逻辑 //首先根据id找到对应的主菜单菜单项 var menuitem = this.findMenuItemByMenuId(id); if(!menuitem||menuitem.length<=0){//主菜单中没有找到,就找more菜单,找到id对应的more菜单项所属的主菜单项 var mainMenuId = this.getMenuItemId_From_MoreMenuRelation(id); if( !!mainMenuId&&mainMenuId.length>0 ){//more菜单中找到了id对应的主菜单项id,根据id返回主菜单项 menuitem = this.findMenuItemByMenuId(mainMenuId); if(!!menuitem&&menuitem.length>0){ var more=$("#"+id,$('#pageableDiv')).parent(); $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); more=$('a>div.box',more); if (more.hasClass('moreButtonSelected') == false){ more.addClass('moreButtonSelected'); } var pagesTags=$('.item.moreButtonsTag'); if(pagesTags.length>0){ for(var i=0;i0){ tags.addClass('active'); } } } } } } //其次找到的菜单项中newIPPort.menuCategoryID对应的src覆盖breadcrumgroupbuttonsrc属性值, if(!!menuitem&&menuitem.length>0){ var mulsrc=menuitem.attr(newIPPort.menuCategoryID+"-multiInsrc"); if(!!mulsrc){ menuitem.attr("breadcrumgroupbuttonsrc" ,mulsrc); getBreadcrumbRightButtons(mulsrc,true); } } if (waittime) { clearInterval(waittime); } waittime = setInterval(function () { if(moreMenusisLoaded==true){ clearInterval(waittime); openoFrameWork.goToURLByIDAndNewAction(id,newActionStr,null); } }, 10); }, goToURLByIDAndNewAction:function(id,newActionStr,newBrowserPageOption){ if(!id){ return; } /*if(id.indexOf("#")<0){ id="#"+id; }*/ var menuitem = this.findMenuItemByMenuId(id); //处理新开页面情况 if(newBrowserPageOption){ var href = ICTFRAME_CONST_DEFAULTPAGE_PATH; var hash = getLocationHashByMenuId(id); var newin=window.open(href + newBrowserPageOption.paramStr + hash,newBrowserPageOption.windowTitle); newin.name=newActionStr;//注意这种传递参数的方法,被打开的页面中需要通过top.name中获取该传递的参数。 return; } //$(window).off('hashchange', loadCurrentHash); var menuItemID=menuitem?menuitem.attr("id"):""; if(!!menuItemID&&menuItemID.length>0){ //menuItemID="#" + menuItemID; //menuItemID=!!newActionStr?menuItemID:menuItemID+"/no"; _setLocationHash(menuItemID); } var breadcrumbBtnMenuItemParent=""; if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理 menuItemID=id; if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存 breadcrumbBtnMenuItemParent=breadcrumbBtnMenus.items(menuItemID); menuitem=this.findMenuItemByMenuId(breadcrumbBtnMenuItemParent); //_breadcrumbSource=true; } // else{//在新增的可翻页的更多菜单里面找 // var pageDiv = $('#pageableDiv'); // menuitem=$('#' + menuItemID , pageDiv); // } if( menuitem && menuitem.length > 0){ isMoreMenuItemClick = true; } } if(!menuitem||menuitem.length<=0){ //面包屑和主菜单都没有找到,情况可能是:更多菜单点击打开后,刷新,hash已经更改,但是对应的更多菜单的html没有加载,需要找到更多菜单和主菜单的对应关系 var mainMenuId = this.getMenuItemId_From_MoreMenuRelation( id ); if( mainMenuId ){ menuitem = this.findMenuItemByMenuId(mainMenuId); } } if (store&&store("globleCurrentBreadcrumb")){ globleCurrentBreadcrumb=store("globleCurrentBreadcrumb"); //下面处理下刷新整个页面后从cookie中获取来的最后一次操作的面包屑对应的对应菜单的name属性回写,便于面包屑事件响应能够找到对应的菜单 var al=$("a",$("
"+globleCurrentBreadcrumb+"
")); var alink,gal; for(i=0;i0){ var panel = $('.zte-theme-panel'); var navPosOption = $('.nav-pos-direction', panel).val(); if(navPosOption === openoFrameWork_menu_fmenu){ var hparentid=menuitem.attr("hparentid"); var id=menuitem.attr("id"); var i=0,menuItemH=menuitem; while (id!=hparentid&&i<20){ menuItemH=openoFrameWork.findMenuItemByMenuId(hparentid); hparentid=menuItemH.attr("hparentid"); id=menuItemH.attr("id"); i++; }; if(!menuItemH.hasClass('active')) menuItemH.parent().addClass("active"); } }else{ console.log("goToURLByIDAndNewAction():Can't find the menuitem.The menu ID is:"+id+".Please check if the ID or ID cache is correct."); } //try{ var parm=undefined; if(!!newActionStr&&breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ parm={action:newActionStr,breadcrumbBtnMenuItem:menuItemID}; }else if(!!newActionStr){ parm={action:newActionStr}; }else if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){ parm={breadcrumbBtnMenuItem:menuItemID}; }else if(mainMenuId){ isMoreMenuItemClick = true; parm={breadcrumbBtnMenuItem:menuItemID}; } //if(breadChangeType){ // if(!parm){ // parm = {}; // } // parm.breadChangeType = breadChangeType; //} if(parm&&parm.action || parm&&parm.breadChangeType) { _hashSource="dhByInterface"; } if(menuitem&&menuitem.length>0){ menuitem.one('click',parm,function(e){ //临时一次性的注册一次click事件处理函数,执行完毕会自动删除 openoFrameWork.dealAtoIframe($(this),e); //$(window).one('hashchange', loadCurrentHash); return false; }); menuitem.click();//后执行 } /*}catch(e){} finally{ //$(window).on('hashchange', loadCurrentHash); }*/ }, getBreadcrumbEle:function(){ return $('.breadcrumbUl')[0]; }, findMenuItemByMenuId:function( id ){ var menuitem=undefined; var panel = $('.zte-theme-panel'); var navPosOption = $('.nav-pos-direction', panel).val(); var items = undefined; if (navPosOption === "vertical"){ //从垂直菜单里面找 items=$("#page-sidebar-menu a[id='"+id+"']"); }else if(navPosOption === openoFrameWork_menu_horizontal){//从水平菜单里面找 items=$("#main_hormenu a[id='"+id+"']"); if(items.length == 0){ //横菜单没有找到,再在横菜单的子菜单找一次 items=$("#page-megachild-sidebar-menu a[id='"+id+"']"); } }else if(navPosOption === openoFrameWork_menu_fmenu){ items=$("#f_hormenu a[id='"+id+"']"); if(items.length == 0){ //横菜单没有找到,再在竖菜单找一次。 items=$("#page-f-sidebar-menu a[id='"+id+"']"); } } if( items&&items.length == 0 ){ console.log( 'fmenu alink length is :' + $("#page-f-sidebar-menu a").length ); console.log( 'cant find menu in sidemenu、megamenu and fmenu , the menu id is ' + id ); } if(items&&items.length>0){ for(var i=0;i0){ for(var i=0;i 0) { parm = { breadcrumbBtnMenuItem : menuItemID }; } if (menuitem && menuitem.length > 0) { menuitem.one('click', parm, function (e) { //临时一次性的注册一次click事件处理函数,执行完毕会自动删除 var containerStr = $(this).parentsUntil('.page-container').hasClass('page-sidebar') ? 'page-sidebar' : ""; // containerStr = $(this).parentsUntil('.header-inner').hasClass('hor-menu') ? 'header' : containerStr; _isClicked = false; dealMenuItemGetFocus($(this),e,containerStr); return false; }); menuitem.click(); //后执行 } }, // 处理面包削中的按钮菜单增加的导航连接,显示在iframe中 openbreadcrumbLink:function(aObject,e) { var url = aObject.attr("href"); if(!url||url.length<2) return; e.preventDefault(); dealScrollTo(); var menuItemID=aObject.attr("id"); if(!!menuItemID&&menuItemID.length>0){ _setLocationHash(menuItemID); _hashSource="dhByInterface"; } dealstartPageLoading(); dealIframe(aObject,e); }, getURLParam:function(name){ var reg = new RegExp("(^|&)" + name.toLowerCase() + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 var search =decodeURIComponent(location.search.substring(1)).toLowerCase(); var r =search.match(reg); //匹配目标参数 if (r != null) return unescape(r[2]); return null; //返回参数值 } }; }(); //抽取html片段中任意位置的script标签(包括代码是内嵌的情况)逐个运行(不会在单个script加载不到的时候停下来) function runHtmlScripts(s) { var div = document.createElement('div'); div.innerHTML = s; var scripts = div.getElementsByTagName('script'); var currentRunningScriptSrcPath = {}; $(scripts).each(function() { var src = this.src; src = openoFrameWork.handlBaseURL(src); if (src) { currentRunningScriptSrcPath[src.substring(src.lastIndexOf("/") + 1)] = src.substring(0, src.lastIndexOf("/") + 1); $.getScript(src); } else { $.globalEval(this.text || this.textContent || this.innerHTML || ''); } }); }; function stripHtmlScripts(htmlContent) { var divContent = document.createElement('div'); divContent.innerHTML = htmlContent; var scripts = divContent.getElementsByTagName('script'); $(scripts).each(function() { this.src = openoFrameWork.handlBaseURL(this.src); this.parentNode.removeChild(this); }); return divContent.innerHTML; }; function getsiderBarMenu(url){ if (url.length<2){ return; } url=openoFrameWork.handlBaseURL(url); openoFrameWork.startPageLoading();//菜单加载中请稍候.... var pagesidebar=$('#page-sidebar-menu'); pagesidebar.empty(); pagesidebar.append(""); $.ajax({ type: "GET", cache: false, url: url, dataType: "html", success: function (res) { //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行 //res = stripHtmlScripts(res); var resScriptsSriped = stripHtmlScripts(res); pagesidebar.append(resScriptsSriped); runHtmlScripts(res); siderBarMenuAuthentication(); dealMysqlBackupMenu(); //loadi18n_WebFramework_sideMenu(); setTimeout(function () { openoFrameWork.stopPageLoading(); goToHomePage(); }, 1000); }, error: function (xhr, ajaxOptions, thrownError) { //$('#page-sidebar-menu').append('');//加载系统菜单失败!;//加载系统菜单失败! } }); }; var setLayoutValueByCookie = function () { var panel = $('.zte-theme-panel'); if (store('layout-option') != undefined) { $('.layout-option', panel).val(store('layout-option')); } if (store('language-option') != undefined) { $('.language-option', panel).val(store('language-option')); } if (store('sidebar-option') != undefined) { $('.sidebar-option', panel).val(store('sidebar-option')); } if (store('header-option') != undefined) { $('.header-option', panel).val(store('header-option')); } if (store('sidebar-pos-option') != undefined) { $('.sidebar-pos-option', panel).val(store('sidebar-pos-option')); } var horMenuLoadTip = $("[class='nav-load-error']", $(".hormenu")); var sideMenuLoadTip = $("[class='nav-load-error']", $("[class='page-sidebar-menu']")); // 横竖菜单都无错误提示,都正确加载 // if ((!horMenuLoadTip || horMenuLoadTip.length <= 0) && (!sideMenuLoadTip || sideMenuLoadTip.length <= 0)) { // if (store('nav-pos-direction') != undefined) { // var navPosOption = store('nav-pos-direction'); // $('.nav-pos-direction', panel).val(navPosOption); // } else { $('.nav-pos-direction', panel).val('fmenu'); // $.ajax({ // "dataType" : 'json', // "type" : "GET", // "async" : false, // url : FrameConst.REST_GET_FRAME_MENUDIRECTION + "&tmpstamp=" + new Date().getTime(), // "success" : function (obj) { // if (obj.value && (obj.value != "")) { // $('.nav-pos-direction', panel).val(obj.value); // } // } // }); //} // } else { // $('.nav-pos-direction', panel).attr("disabled", true); // } }; function iniFMenu() { var fsidemenu = $('#' + fMenuSiderDivId); if (fsidemenu) { openoFrameWork.startPageLoading(); var menuContent = initLeftMenu(); fsidemenu.empty(); fsidemenu.append(""); fsidemenu.append(menuContent); loadi18n_WebFramework('web-framework-menu-i18n', 'i18n/', 'openo_frame_left_menu_i18n'); openoFrameWork.stopPageLoading(); } }; function goToHomePage(){ locationhash = openoFrameWork.getLocationHash(); if(!!locationhash&&locationhash.length>0){//有锚点,直接触发 var newIPPort=null; if (store&&store('menuCategoryID')) { var s=store('menuCategoryID').split('[menuCategoryID]'); if(s.length>2){ newIPPort={menuCategoryID:s[0],ipPortStr:s[1],newTitle:s[2]}; } } if(!!newIPPort){ openoFrameWork.goToURLByIDAndNewIPPort(locationhash,newIPPort,null); }else{ openoFrameWork.goToURLByIDAndNewAction(locationhash,null,null); } }else{//否则还是模拟点击配置了start类的菜单 var containerStr = ""; //var sidermenu = $("[class='page-sidebar-menu']", $("[class='page-sidebar navbar-collapse collapse']")); var sidermenu = $("#page-sidebar-menu"); var hormenu = $("#main_hormenu"); var fhormenu = $('#' + fMenuMegaDivId); var fhormenusider = $('#page-f-sidebar-menu'); var startmenu = null; var navPosOption = $('.nav-pos-direction', panel).val(); // 侧边栏显示,根据侧边栏CSS选择 if (navPosOption === "vertical") { //containerStr=$('.page-sidebar').length>0?'.page-sidebar':""; startmenu = $('.iframe.start' , sidermenu); dealStartMenu( startmenu, sidermenu ); } // 水平菜单显示,根据水平菜单CSS选择 else if (navPosOption === "horizontal") { //containerStr=$('.hor-menu').length>0?'.header':containerStr; startmenu = $('.iframe.start' , hormenu); dealStartMenu( startmenu, hormenu ); } //F菜单的恒菜单显示 else if (navPosOption === openoFrameWork_menu_fmenu) { //containerStr=$('.hor-menu').length>0?'.header':containerStr; startmenu = $('.iframe.start' ,fhormenu); if (startmenu && startmenu.length < 1) { startmenu = $('.iframe.start' ,fhormenusider); } dealStartMenu( startmenu, fhormenu,fhormenusider ); } } }; var dealStartMenu = function(startmenu , menuContainer,menuContainer2 ){ var timer =setInterval(function () { if(startmenu&&startmenu.length>0){ startmenu.click(); clearInterval(timer); }else{ console.log('the start menu click event is not be triggerd ,so do it repeat!!'); $('a[operation]', menuContainer).each(function () { startmenu = $(this); return false; }); if (menuContainer2&&startmenu && startmenu.length < 1) { $('a[operation]', menuContainer2).each(function () { startmenu = $(this); return false; }); } } }, 100); handeCtxMenuitem(); } // 屏蔽横竖菜单项的右键功能 function handeCtxMenuitem() { $(".page-sidebar ul li a").each(function() { if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") { $(this).attr("oncontextmenu", "return false"); } }); $(".hormenu li a").each(function() { if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") { $(this).attr("oncontextmenu", "return false"); } }); } function initBaseInfo(){ $("#logout_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_logout')); $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen')); $("#changePwd_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_changePwd')); $("#com_zte_ums_ict_framework_moudle_about").text($.i18n.prop('com_zte_ums_ict_framework_moudle_about')); $("#com_zte_ums_ict_framework_moudle_help").text($.i18n.prop('com_zte_ums_ict_framework_moudle_help')); $("#zte_menu-toggler").attr("title",$.i18n.prop('com_zte_ums_ict_framework_moudle_menutoggler')); }; window.closeModal = function(modalid) { if(!modalid){ return; } if(modalid.indexOf("#")<0){ modalid="#"+modalid; } $(modalid).modal('hide'); }; function getLcsRight(lcsoperations) { var lcsrights = new Array(); if (lcsoperations && (lcsoperations.length > 0)) { // 请求后台license value //----test data---- // var testjson = '{"data":[{"id":"mylcs","name":"xxx","value":"false"}]}'; // var testopt = eval('(' + testjson + ')'); // var testarray = testopt.data; //-----end test data--- var keys = { "keys" : lcsoperations }; var jsonvalues = JSON.stringify(keys); var data = { "data" : jsonvalues }; var url=FrameConst.REST_GETLICENSEINFO + "?tmpstamp=" + new Date().getTime(); url=openoFrameWork.handlBaseURL(url); $.ajax({ "dataType" : 'json', "type" : "GET", "async" : false, "url" : url, "data" : data, //"contentType" : 'application/json; charset=utf-8', "success" : function (response) { if (response) { lcsrights = response.data; } }, "error" : function (XMLHttpRequest, textStatus, errorThrown) { lcsrights = null; } }); return lcsrights; } return lcsrights; } // 侧边栏菜单鉴权 function siderBarMenuAuthentication() { // license 鉴权 var menuids = new Array(); var lcsoperations = new Array(); //从页面DOM取得菜单license项。 $('a[licenseid]', $('.page-sidebar-menu')).each(function () { var licenseid = $(this).attr("licenseid"); if (licenseid) { lcsoperations.push(licenseid); var id = $(this).attr("id"); menuids.push(id); } }); var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 if (lcsrights && (lcsrights.length == menuids.length)) { // 根据后台license值判断所在菜单项是否显示 for (var i = 0; i < menuids.length; i++) { var id = menuids[i]; var lcskey = lcsoperations[i]; var lcsitem = lcsrights[i]; // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 if (lcsitem.value != "True") { $('#'+id, $('.page-sidebar-menu')).parent().remove(); } } } var operations = new Array(); $('a[operation]', $('.page-sidebar-menu')).each(function () { var operation = $(this).attr("operation"); if (operation) { operations.push(operation); } }); // 遍历菜单项,提取所有的操作码 var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 $('a[operation]', $('.page-sidebar-menu')).each(function () { var operation = $(this).attr("operation"); if (operation) { if (!hasRight(operation, rightObj)) { $(this).parent("li").remove(); // 删除没有权限的菜单项 } } }); rebuildSiderBarMenu(); }; // 横向菜单栏鉴权 function horMenuAuthentication( horMenuId ) { // license 鉴权 var menuids = new Array(); var lcsoperations = new Array(); //从页面DOM取得菜单license项。 $('a[licenseid]', $('#'+ horMenuId)).each(function () { var licenseid = $(this).attr("licenseid"); if (licenseid) { lcsoperations.push(licenseid); var id = $(this).attr("id"); menuids.push(id); } }); var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 if (lcsrights && (lcsrights.length == menuids.length)) { // 根据后台license值判断所在菜单项是否显示 for (var i = 0; i < menuids.length; i++) { var id = menuids[i]; var lcskey = lcsoperations[i]; var lcsitem = lcsrights[i]; // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 if (lcsitem.value != "True") { $('#'+id, $('#'+ horMenuId)).parent().remove(); } } } var operations = new Array(); $('a[operation]', $('#'+ horMenuId)).each(function () { var operation = $(this).attr("operation"); if (operation) { operations.push(operation); } }); // 遍历菜单项,提取所有的操作码 var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 $('a[operation]', $('#'+ horMenuId)).each(function () { var operation = $(this).attr("operation"); if (operation) { if (!hasRight(operation, rightObj)) { $(this).parent("li").remove(); // 删除没有权限的菜单项 } } }); rebuildHorMenu(); }; // “更多操作”分组按钮鉴权 function groupButtonAuthentication() { // license 鉴权 var menuids = new Array(); var lcsoperations = new Array(); //从页面DOM取得菜单license项。 $('a[licenseid]', $('.more-botton-zone > li.btn-group')).each(function () { var licenseid = $(this).attr("licenseid"); if (licenseid) { lcsoperations.push(licenseid); var id = $(this).attr("id"); menuids.push(id); } }); var lcsrights = getLcsRight(lcsoperations);// 取得license数据。 if (lcsrights && (lcsrights.length == menuids.length)) { // 根据后台license值判断所在菜单项是否显示 for (var i = 0; i < menuids.length; i++) { var id = menuids[i]; var lcskey = lcsoperations[i]; var lcsitem = lcsrights[i]; // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项 if (lcsitem.value != "True") { $('#'+id, $('.more-botton-zone > li.btn-group')).parent().remove(); } } } // 增加mysql判断,如果数据库为mysql,去掉基础数据备份功能菜单项 var dbType = openoFrameWork_conf.dbType; if (dbType == "mysql") { $("#uep-ict-backup-baseDataBack",$('.more-botton-zone > li.btn-group')).parent().remove(); } var operations = new Array(); $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () { var operation = $(this).attr("operation"); if (operation) { operations.push(operation); } }); // 遍历菜单项,提取所有的操作码 var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断 $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () { var operation = $(this).attr("operation"); if (operation) { if (!hasRight(operation, rightObj)) { $(this).parent("li").remove(); // 删除没有权限的菜单项 } } }); // 如果“更多菜单”下没有子菜单了,则删除整个“更多菜单”下拉框。 if ($('li > a', $('.more-botton-zone > li.btn-group')).length == 0) { $('.more-botton-zone > li.btn-group').remove(); } }; // 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面 function rebuildSiderBarMenu() { if ($('a.start').length == 0) { $('li > a[href!="javascript:;"]', $('.page-sidebar-menu')).eq(0).addClass("start"); } $('ul.sub-menu', $('.page-sidebar-menu')).each(function () { if ($(this).has('li').length == 0) { $(this).parent("li").remove(); } }); }; // 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面 function rebuildHorMenu() { if ($('a.start').length == 0) { $('li > a[href!="#"]', $('#main_hormenu')).eq(0).addClass("start"); } $('ul.mega-menu-submenu', $('#main_hormenu')).each(function () { if ($(this).has('li > a').length == 0) { $(this).remove(); // 删空的分组列 } }); //删除增加的分组div $('div.zteDivWidth', $('#main_hormenu')).each(function () { if ($(this).has('ul').length == 0) { $(this).remove(); // 删空的分组列 } }); $('ul.dropdown-menu', $('#main_hormenu')).each(function () { if ($(this).has('ul').length == 0) { $(this).parent("li").remove(); // 删空的一级菜单栏 } }); $('li.divider', $('#main_hormenu')).each(function () { if ($(this).next().hasClass('divider')) { $(this).remove(); // 连续出现分隔线则删除一个 } }); $('li.divider', $('#main_hormenu')).each(function () { if ($(this).next().length == 0) { $(this).remove(); // 如果分隔线在最后一行,则删除之 } }); } //获取页面菜单栏所有的操作码权限 function getAllOperCodeRights(operations) { var rights = new Array(); if( operations && operations.length > 0 ){ var data = { "operations" : operations }; var sendData = JSON.stringify(data); var url=FrameConst.REST_CHECKRIGHT + "?data=" + sendData + "&tmpstamp=" + new Date().getTime(); url=openoFrameWork.handlBaseURL(url); $.ajax({ "dataType" : 'json', "type" : "GET", "async" : false, "url" : url, "data" : null, //"contentType" : 'application/json; charset=utf-8', "success" : function (response) { rights = response.value; }, "error" : function (XMLHttpRequest, textStatus, errorThrown) { if (XMLHttpRequest.status == 401) { window.location.replace("login.html"); } else { console.log('Communication Error!'); } } }); } return { opCodes : operations, rights : rights }; }; // 判断操作码是否有权限 function hasRight(opCode, rightObj) { for (var i = 0; i < rightObj.opCodes.length; i++) { if (rightObj.opCodes[i] == opCode) { return (rightObj.rights[i] == true); } } return false; }; // 处理mysql环境下备份菜单的合并问题 function dealMysqlBackupMenu() { var dbType = openoFrameWork_conf.dbType; if (dbType !== undefined && dbType !== "mysql") { return; } var sidermenu = $("[class='page-sidebar-menu']"); var hormenu = $(".hormenu"); //这段代码先这么写,html的位置不一定正确,如果后面位置不一致,再修改。 if (sidermenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) { $('#uep-ict-backup-dataBackup', sidermenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH); } if (hormenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) { $('#uep-ict-backup-dataBackup', hormenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH); $('#uep-ict-backup-dataBackup').parent('li').attr('style', 'display:block'); $('#uep-ict-backup-allDbStructBackup').parent('li').attr('style', 'display:none'); $('#uep-ict-backup-baseDataBack').parent('li').attr('style', 'display:none'); } }; // 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作, // 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作, function dealMavToggle(navtoggle) { var sidermenu = $("#page-sidebar-menu"); var hormenu = $("#main_hormenu"); var panel = $(".zte-theme-panel"); var siderbarpos = $(".nav-pos-direction", panel).val() if ("hidden" == $(navtoggle).attr("navtoggledispattr")) { $(navtoggle).attr("navtoggledispattr", "display"); sidermenu.css('display','block');//侧边栏显示 hormenu.css("display", "none");//隐藏水平菜单栏 } else { $(navtoggle).attr("navtoggledispattr", "hidden"); sidermenu.css('display','none');//侧边栏隐藏 hormenu.css("display", "none"); } };