CLIENT GUI Framework
[vnfsdk/refrepo.git] / openo-portal / portal-common / src / main / webapp / common / js / core / openoFrameWork.js
1 /*\r
2 主框架\r
3 */ \r
4 /*string类型的去前后空格和format方法*/\r
5 String.prototype.trim = function() { \r
6         return this.replace(/(^\s*)|(\s*$)/g, "");  \r
7 };\r
8 String.prototype.format=function() {  \r
9         if(arguments.length==0) return this;  \r
10         for(var s=this, i=0; i<arguments.length; i++)  \r
11                 s=s.replace(new RegExp("\\{"+i+"\\}","g"), arguments[i]);  \r
12         return s;  \r
13 }; \r
14 String.prototype.startWith=function(str){     \r
15   var reg=new RegExp("^"+str);     \r
16   return reg.test(this);        \r
17 };\r
18 String.prototype.endWith=function(str){     \r
19   var reg=new RegExp(str+"$");     \r
20   return reg.test(this);        \r
21 };\r
22 \r
23 /*全屏 参考:http://www.alixixi.com/web/a/2015031794521.shtml */\r
24 var s=!function(w,d){\r
25         var fs={\r
26                         supportsFullScreen:false,\r
27                         isFullScreen:false,\r
28                         requestFullScreen:'',\r
29                         exitFullScreen:'',\r
30                         fullscreenchange:'',\r
31                         prefix:''\r
32                 },\r
33         aP=['webkit','moz','ms'],    //opera 15 支持全屏是webkit内核\r
34         len=aP.length,\r
35         i=0;\r
36         if(d.exitFullscreen){\r
37                 fs.supportsFullScreen=true\r
38         }else{\r
39                 for(; i<len; i++){\r
40                         if(d[aP[i]+'ExitFullscreen']||d[aP[i]+'CancelFullScreen']){\r
41                                 fs.supportsFullScreen=true;\r
42                                 fs.prefix=aP[i];\r
43                                 break\r
44                         }\r
45                 }\r
46         }        \r
47         if(fs.supportsFullScreen){\r
48                 var p=fs.prefix;\r
49                 fs.fullscreenchange=function(fn){\r
50                         d.addEventListener(p=='ms' ? 'MSFullscreenChange' : p+'fullscreenchange',function(){\r
51                                 fn && fn()\r
52                         },false)\r
53                 };\r
54                 fs.fullscreenchange(function(){\r
55                         fs.isFullScreen=(function(p){\r
56                                 switch (p) {\r
57                                         case '':\r
58                                                 return d.fullscreen;\r
59                                         case 'webkit':\r
60                                                 return d.webkitIsFullScreen;\r
61                                         case 'moz':\r
62                                                 return d.mozFullScreen;\r
63                                         case 'ms':\r
64                                                 return d.msFullscreenElement ? true : false\r
65                                 }\r
66                         })(p)\r
67                 });\r
68                 fs.requestFullScreen=function(elem){\r
69                         var elem=elem||d.documentElement;\r
70                         try{\r
71                                 p ? elem[p+'RequestFullScreen']() : elem.requestFullScreen()    //chrome,ff,标准\r
72                         }catch(e){\r
73                                 elem[p+'RequestFullscreen']()    //elem.msRequestFullscreen\r
74                         }\r
75                 };\r
76                 fs.exitFullScreen=function(){\r
77                         try{\r
78                                 p ? d[p+'ExitFullscreen']() : d.exitFullscreen()    //ie,新版chrome或标准\r
79                         }catch(e){\r
80                                 d[p+'CancelFullScreen']()    //老版chrome 火狐\r
81                         }\r
82                 }\r
83         }\r
84         w.screenfull=fs\r
85 }(window,document);\r
86 /*\r
87  * Purl (A JavaScript URL parser) v2.3.1\r
88  * Developed and maintanined by Mark Perkins, mark@allmarkedup.com\r
89  * Source repository: https://github.com/allmarkedup/jQuery-URL-Parser\r
90  * Licensed under an MIT-style license. See https://github.com/allmarkedup/jQuery-URL-Parser/blob/master/LICENSE for details.\r
91  */\r
92 ;(function(factory) {\r
93     if (typeof define === 'function' && define.amd) {\r
94         define(factory);\r
95     } else {\r
96         window.purl = factory();\r
97     }\r
98 })(function() {\r
99     var tag2attr = {\r
100             a       : 'href',\r
101             img     : 'src',\r
102             form    : 'action',\r
103             base    : 'href',\r
104             script  : 'src',\r
105             iframe  : 'src',\r
106             link    : 'href',\r
107             embed   : 'src',\r
108             object  : 'data'\r
109         },\r
110 \r
111         key = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'fragment'], // keys available to query\r
112                 aliases = { 'anchor' : 'fragment' }, // aliases for backwards compatability\r
113                 parser = {\r
114             strict : /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,  //less intuitive, more accurate to the specs\r
115             loose :  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // more intuitive, fails on relative paths and deviates from specs\r
116         },\r
117                 isint = /^[0-9]+$/;\r
118 \r
119     function parseUri( url, strictMode ) {\r
120         var str = decodeURI( url ),\r
121         res   = parser[ strictMode || false ? 'strict' : 'loose' ].exec( str ),\r
122         uri = { attr : {}, param : {}, seg : {} },\r
123         i   = 14;\r
124         while ( i-- ) {\r
125             uri.attr[ key[i] ] = res[i] || '';\r
126         }\r
127                 // build query and fragment parameters\r
128         uri.param['query'] = parseString(uri.attr['query']);\r
129         uri.param['fragment'] = parseString(uri.attr['fragment']);\r
130                 // split path and fragement into segments\r
131         uri.seg['path'] = uri.attr.path.replace(/^\/+|\/+$/g,'').split('/');\r
132         uri.seg['fragment'] = uri.attr.fragment.replace(/^\/+|\/+$/g,'').split('/');\r
133                 // compile a 'base' domain attribute\r
134         uri.attr['base'] = uri.attr.host ? (uri.attr.protocol ?  uri.attr.protocol+'://'+uri.attr.host : uri.attr.host) + (uri.attr.port ? ':'+uri.attr.port : '') : '';\r
135 \r
136         return uri;\r
137     }\r
138 \r
139     function getAttrName( elm ) {\r
140         var tn = elm.tagName;\r
141         if ( typeof tn !== 'undefined' ) return tag2attr[tn.toLowerCase()];\r
142         return tn;\r
143     }\r
144 \r
145     function promote(parent, key) {\r
146         if (parent[key].length === 0) return parent[key] = {};\r
147         var t = {};\r
148         for (var i in parent[key]) t[i] = parent[key][i];\r
149         parent[key] = t;\r
150         return t;\r
151     }\r
152 \r
153     function parse(parts, parent, key, val) {\r
154         var part = parts.shift();\r
155         if (!part) {\r
156             if (isArray(parent[key])) {\r
157                 parent[key].push(val);\r
158             } else if ('object' == typeof parent[key]) {\r
159                 parent[key] = val;\r
160             } else if ('undefined' == typeof parent[key]) {\r
161                 parent[key] = val;\r
162             } else {\r
163                 parent[key] = [parent[key], val];\r
164             }\r
165         } else {\r
166             var obj = parent[key] = parent[key] || [];\r
167             if (']' == part) {\r
168                 if (isArray(obj)) {\r
169                     if ('' !== val) obj.push(val);\r
170                 } else if ('object' == typeof obj) {\r
171                     obj[keys(obj).length] = val;\r
172                 } else {\r
173                     obj = parent[key] = [parent[key], val];\r
174                 }\r
175             } else if (~part.indexOf(']')) {\r
176                 part = part.substr(0, part.length - 1);\r
177                 if (!isint.test(part) && isArray(obj)) obj = promote(parent, key);\r
178                 parse(parts, obj, part, val);\r
179                 // key\r
180             } else {\r
181                 if (!isint.test(part) && isArray(obj)) obj = promote(parent, key);\r
182                 parse(parts, obj, part, val);\r
183             }\r
184         }\r
185     }\r
186 \r
187     function merge(parent, key, val) {\r
188         if (~key.indexOf(']')) {\r
189             var parts = key.split('[');\r
190             parse(parts, parent, 'base', val);\r
191         } else {\r
192             if (!isint.test(key) && isArray(parent.base)) {\r
193                 var t = {};\r
194                 for (var k in parent.base) t[k] = parent.base[k];\r
195                 parent.base = t;\r
196             }\r
197             if (key !== '') {\r
198                 set(parent.base, key, val);\r
199             }\r
200         }\r
201         return parent;\r
202     }\r
203 \r
204     function parseString(str) {\r
205         return reduce(String(str).split(/&|;/), function(ret, pair) {\r
206             try {\r
207                 pair = decodeURIComponent(pair.replace(/\+/g, ' '));\r
208             } catch(e) {\r
209                 // ignore\r
210             }\r
211             var eql = pair.indexOf('='),\r
212                 brace = lastBraceInKey(pair),\r
213                 key = pair.substr(0, brace || eql),\r
214                 val = pair.substr(brace || eql, pair.length);\r
215 \r
216             val = val.substr(val.indexOf('=') + 1, val.length);\r
217 \r
218             if (key === '') {\r
219                 key = pair;\r
220                 val = '';\r
221             }\r
222 \r
223             return merge(ret, key, val);\r
224         }, { base: {} }).base;\r
225     }\r
226 \r
227     function set(obj, key, val) {\r
228         var v = obj[key];\r
229         if (typeof v === 'undefined') {\r
230             obj[key] = val;\r
231         } else if (isArray(v)) {\r
232             v.push(val);\r
233         } else {\r
234             obj[key] = [v, val];\r
235         }\r
236     }\r
237 \r
238     function lastBraceInKey(str) {\r
239         var len = str.length,\r
240             brace,\r
241             c;\r
242         for (var i = 0; i < len; ++i) {\r
243             c = str[i];\r
244             if (']' == c) brace = false;\r
245             if ('[' == c) brace = true;\r
246             if ('=' == c && !brace) return i;\r
247         }\r
248     }\r
249 \r
250     function reduce(obj, accumulator){\r
251         var i = 0,\r
252             l = obj.length >> 0,\r
253             curr = arguments[2];\r
254         while (i < l) {\r
255             if (i in obj) curr = accumulator.call(undefined, curr, obj[i], i, obj);\r
256             ++i;\r
257         }\r
258         return curr;\r
259     }\r
260 \r
261     function isArray(vArg) {\r
262         return Object.prototype.toString.call(vArg) === "[object Array]";\r
263     }\r
264 \r
265     function keys(obj) {\r
266         var key_array = [];\r
267         for ( var prop in obj ) {\r
268             if ( obj.hasOwnProperty(prop) ) key_array.push(prop);\r
269         }\r
270         return key_array;\r
271     }\r
272 \r
273     function purl( url, strictMode ) {\r
274         if ( arguments.length === 1 && url === true ) {\r
275             strictMode = true;\r
276             url = undefined;\r
277         }\r
278         strictMode = strictMode || false;\r
279         url = url || window.location.toString();\r
280 \r
281         return {\r
282             data : parseUri(url, strictMode),\r
283             // get various attributes from the URI\r
284             attr : function( attr ) {\r
285                 attr = aliases[attr] || attr;\r
286                 return typeof attr !== 'undefined' ? this.data.attr[attr] : this.data.attr;\r
287             },\r
288             // return query string parameters\r
289             param : function( param ) {\r
290                 return typeof param !== 'undefined' ? this.data.param.query[param] : this.data.param.query;\r
291             },\r
292 \r
293             // return fragment parameters\r
294             fparam : function( param ) {\r
295                 return typeof param !== 'undefined' ? this.data.param.fragment[param] : this.data.param.fragment;\r
296             },\r
297             // return path segments\r
298             segment : function( seg ) {\r
299                 if ( typeof seg === 'undefined' ) {\r
300                     return this.data.seg.path;\r
301                 } else {\r
302                     seg = seg < 0 ? this.data.seg.path.length + seg : seg - 1; // negative segments count from the end\r
303                     return this.data.seg.path[seg];\r
304                 }\r
305             },\r
306             // return fragment segments\r
307             fsegment : function( seg ) {\r
308                 if ( typeof seg === 'undefined' ) {\r
309                     return this.data.seg.fragment;\r
310                 } else {\r
311                     seg = seg < 0 ? this.data.seg.fragment.length + seg : seg - 1; // negative segments count from the end\r
312                     return this.data.seg.fragment[seg];\r
313                 }\r
314             }\r
315         };\r
316     }    \r
317     purl.jQuery = function($){\r
318         if ($ != null) {\r
319             $.fn.url = function( strictMode ) {\r
320                 var url = '';\r
321                 if ( this.length ) {\r
322                     url = $(this).attr( getAttrName(this[0]) ) || '';\r
323                 }\r
324                 return purl( url, strictMode );\r
325             };\r
326             $.url = purl;\r
327         }\r
328     };\r
329     purl.jQuery(window.jQuery);\r
330     return purl;\r
331 });\r
332 //把框架所有的ajax请求集中到一起,发一条请求,获取所有的配置信息。\r
333 openoFrameWork_conf = {\r
334         userName:store("loginUserName"),\r
335         changePassItem:FrameConst.change_pass?FrameConst.change_pass:true,\r
336         helpMenuItem:false,\r
337         aboutMenuItem:false,\r
338         flightMenuItem:false,\r
339         fullscreenMenuItem:true,\r
340         logoutMenuItem:true,\r
341         defaultThemeColor:"ztebluelight2",\r
342         dbType:"other",\r
343         acceptLanguage:"en-US"\r
344 };\r
345 $("#currentUser").html(openoFrameWork_conf.userName);\r
346 \r
347 $.ajax({\r
348         url : FrameConst.REST_FRAMECOMMIFO,\r
349         type : "GET",\r
350         cache:false,\r
351         contentType : 'application/json; charset=utf-8',\r
352         success: function(data){\r
353                 var tempConf = data;\r
354                 if(     tempConf.helpMenuItem && tempConf.helpMenuItem != "" ){\r
355                         openoFrameWork_conf.helpMenuItem = tempConf.helpMenuItem;\r
356                 }\r
357                 if(     tempConf.aboutMenuItem && tempConf.aboutMenuItem != "" ){\r
358                         openoFrameWork_conf.aboutMenuItem = tempConf.aboutMenuItem;\r
359                 }               \r
360                 if(     tempConf.flightMenuItem && tempConf.flightMenuItem != "" ){\r
361                         openoFrameWork_conf.flightMenuItem = tempConf.flightMenuItem;\r
362                 }\r
363                 if(     tempConf.fullscreenMenuItem && tempConf.fullscreenMenuItem != "" ){\r
364                         openoFrameWork_conf.fullscreenMenuItem = tempConf.fullscreenMenuItem;\r
365                 }\r
366                 if(     tempConf.logoutMenuItem && tempConf.logoutMenuItem != "" ){\r
367                         openoFrameWork_conf.logoutMenuItem = tempConf.logoutMenuItem;\r
368                 }\r
369                 if(     tempConf.defaultThemeColor && tempConf.defaultThemeColor != "" ){\r
370                         openoFrameWork_conf.defaultThemeColor = tempConf.defaultThemeColor;\r
371                 }\r
372                 if(     tempConf.dbType && tempConf.dbType != "" ){\r
373                         openoFrameWork_conf.dbType = tempConf.dbType;\r
374                 }        \r
375                 if(     tempConf.acceptLanguage && tempConf.acceptLanguage != "" ){\r
376                         openoFrameWork_conf.acceptLanguage = tempConf.acceptLanguage;\r
377                 }\r
378                 if(     tempConf.changePassItem && tempConf.changePassItem != "" ){\r
379                         openoFrameWork_conf.changePassItem = tempConf.changePassItem;\r
380                 }\r
381                 \r
382                 setFrameWorkByConf();\r
383                 //userName = data;\r
384                 //console.info('login user is :' + data);\r
385         },\r
386         error:function(data){\r
387                 setFrameWorkByConf();\r
388         }\r
389 }); \r
390 \r
391 function setThemeColor( configColor ){\r
392         var panel = $('.zte-theme-panel');\r
393     $('.theme-colors > ul > li', panel).each(function () {\r
394         var color = $(this).attr("data-style");\r
395         if (color == configColor) {\r
396             // 匹配上了才重设默认主题\r
397             $(this).addClass("current");\r
398             $('#style_color').attr("href", "css/themes/" + color + ".css");\r
399             //if (store) {\r
400                 store('style_color', color);\r
401             //}\r
402        }\r
403     });\r
404 }; \r
405 \r
406 function setFrameWorkByConf() {\r
407         //设置用户相关的框架下拉菜单是否可用\r
408         var helpMenuItem = openoFrameWork_conf.helpMenuItem;\r
409         var aboutMenuItem = openoFrameWork_conf.aboutMenuItem;\r
410         var flightMenuItem = openoFrameWork_conf.flightMenuItem;\r
411         var fullscreenMenuItem = openoFrameWork_conf.fullscreenMenuItem;\r
412         var logoutMenuItem = openoFrameWork_conf.logoutMenuItem;\r
413         var changePassMenuItem = openoFrameWork_conf.changePassMenuItem;\r
414         if (!helpMenuItem || helpMenuItem === "false") {\r
415                 $('#uep_ict_help_url').parent('li').remove();\r
416         }\r
417         if (!aboutMenuItem|| aboutMenuItem === "false") {\r
418                 $('[data-target="#aboutDlg"]').parent('li').remove();\r
419         }\r
420         if (!helpMenuItem && !aboutMenuItem) {\r
421                 $('#uep_ict_help_div').remove();\r
422         }\r
423         if (!flightMenuItem|| flightMenuItem === "false") {\r
424                 $('#header_notification_bar').html("<div>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</div>");\r
425         }\r
426         if (!fullscreenMenuItem|| fullscreenMenuItem === "false") {\r
427                 //$('#trigger_fullscreen').parent().css("display", "none");\r
428                 $('#trigger_fullscreen_div').html("");\r
429         }\r
430         if (!logoutMenuItem || logoutMenuItem === "false") {\r
431                 //$('#trigger_logout').parent().css("display", "none");\r
432                 $('#trigger_logout_div').html("");\r
433         }\r
434         if ((!fullscreenMenuItem && !logoutMenuItem) || (fullscreenMenuItem === "false" && logoutMenuItem === "false")) {\r
435                 $('#full_logout_divider').css("display", "none");\r
436         }\r
437         if (!changePassMenuItem ) {\r
438                 $('#changePwd_labellink').css('display','none');\r
439                 $('#full_logout_divider').css('display','none');\r
440         }\r
441 \r
442         //设置二次开发者选择的框架皮肤\r
443         var defaultColor = openoFrameWork_conf.defaultThemeColor;\r
444         var panel = $('.zte-theme-panel');\r
445         $('ul > li', panel).removeClass("current"); \r
446         if (store && !store('style_color')) { // cookie没有才设置默认主题\r
447                 setThemeColor(defaultColor);\r
448         } else {\r
449                 setThemeColor(store('style_color'));\r
450         }\r
451 };\r
452 \r
453 /*新增的hashtabel实现类,用户后续iframe的缓存,前进后退时打开过的页面的菜单id的缓存等*/\r
454 function Hashtable()  \r
455\r
456   this._hash = {}; \r
457   this._count = 0; \r
458   this.add = function(key, value)  \r
459   { \r
460     if (this._hash.hasOwnProperty(key)) \r
461       return false; \r
462     else { \r
463         this._hash[key] = value; this._count++; return true;\r
464     } \r
465   } ;\r
466   this.hash = function() { return this._hash; };\r
467   this.remove = function(key) { delete this._hash[key]; this._count--; } ;\r
468   this.count = function() { return this._count; };\r
469   this.items = function(key) { if (this.contains(key)) return this._hash[key]; }; \r
470   this.contains = function(key) { return this._hash.hasOwnProperty(key); }; \r
471   this.clear = function() { this._hash = {}; this._count = 0; }; \r
472   this.replace = function(key, value)  \r
473   { //有则删除后增加///相当于更新\r
474         if(this.contains(key)){ \r
475            this.remove(key);\r
476     }\r
477         return this.add(key, value);\r
478   } ;\r
479 };\r
480 \r
481 var fMenuSiderDivId = 'page-f-sidebar-menu';\r
482 var fMenuMegaDivId = 'f_hormenu';\r
483 var megaSiderDivId = 'page-megachild-sidebar-menu';\r
484 var megaDivId = 'main_hormenu';\r
485 var openoFrameWork_menu_horizontal = "horizontal";\r
486 var openoFrameWork_menu_vertical = "vertical";\r
487 var openoFrameWork_menu_fmenu = "fmenu";\r
488 var openoFrameWork_showNav = "true";\r
489 var openoFrameWork_smallView = 960;//原来为992,但是在投影仪上不准(投影仪设置为1024,但是实际尺寸比1024小),边栏菜单也会被移除,这个设置一个稍小的值。\r
490 \r
491 /*下面是主框架的核心*/\r
492 var openoFrameWork = function () {\r
493         var defaultLanage=getLanguage();\r
494     var isRTL = false;//文档顺序\r
495         var isTouch=function(){\r
496                 try {\r
497                 document.createEvent("TouchEvent");\r
498                 return true;\r
499             } catch (e) {\r
500                 return false;\r
501             }\r
502         };\r
503         var isDesktop = !isTouch;\r
504     var isIE8 = false;\r
505     var isIE9 = false;\r
506     var isIE10 = false; \r
507         var gdocTitle="";\r
508     var _sidebarWidth = 225;\r
509     var _sidebarCollapsedWidth = 35;\r
510     var responsiveHandlers = [];    \r
511     var cachedIframes=new Hashtable(); \r
512         var cachedIframesObject=new Hashtable();\r
513         var breadcrumbBtnMenus=new Hashtable(); \r
514         var _menuCategorys=new Hashtable();\r
515     var _iframe="page-mainIframe"; //全局变量保存的是当前正在打开使用的iframe\r
516         var _sceneURLRootPath="";\r
517         var _hashSource="";//信号量\r
518         var _isClicked=false;//信号量\r
519         //var _breadcrumbSource=false;\r
520         \r
521     // 皮肤颜色\r
522     var layoutColorCodes = {\r
523         'blue': '#4b8df8',\r
524         'red': '#e02222',\r
525         'green': '#35aa47',\r
526         'purple': '#852b99',\r
527         'grey': '#555555',\r
528         'light-grey': '#fafafa',\r
529         'yellow': '#ffb848',\r
530                 'ztebluelight': '#3366cc'\r
531     };\r
532     // 获取真实的设备窗口大小,参考了  http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r
533     var _getViewPort = function () {\r
534         var e = window, a = 'inner';\r
535         if (!('innerWidth' in window)) {\r
536             a = 'client';\r
537             e = document.documentElement || document.body;\r
538         }\r
539         return {\r
540             width: e[a + 'Width'],\r
541             height: e[a + 'Height']\r
542         }\r
543     }\r
544     // 初始化\r
545     var dealInit = function () {\r
546                 var sence = '0';\r
547                 var menuSence = getUrlParam("menu");\r
548                 var confSence = 0;\r
549                 if (menuSence) {\r
550                     sence = menuSence;\r
551                 } else {\r
552                     sence = confSence;\r
553                 }\r
554                 switch (sence) {\r
555                 case "1":\r
556                     gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_1').text().trim();\r
557                     break;\r
558                 case "2":\r
559                     gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_2').text().trim();\r
560                     break;\r
561                 case "3":\r
562                     gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title_3').text().trim();\r
563                     break;\r
564                 case "0":\r
565                 default:\r
566                     gdocTitle = $('#com_zte_ums_ict_framework_ui_page_title').text().trim();\r
567                     break;\r
568                 }               \r
569         if ($('body').css('direction') === 'rtl') {\r
570             isRTL = true;\r
571         }\r
572         isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);\r
573         isIE9 = !! navigator.userAgent.match(/MSIE 9.0/);\r
574         isIE10 = !! navigator.userAgent.match(/MSIE 10.0/);\r
575         if (isIE10) {\r
576             $('html').addClass('ie10'); // IE10 \r
577         }        \r
578         if (isIE10 || isIE9 || isIE8) {\r
579             $('html').addClass('ie'); //  IE10 \r
580         }        \r
581         var deviceAgent = navigator.userAgent.toLowerCase();        \r
582         if (deviceAgent.match(/(iphone|ipod|ipad)/)) {\r
583             $(document).on('focus', 'input, textarea', function () {\r
584                 $('.page-header').hide();\r
585                 if($('.page-footer')&&$('.page-footer').length>0)\r
586                   $('.page-footer').hide();\r
587             });\r
588             $(document).on('blur', 'input, textarea', function () {\r
589                 $('.page-header').show();\r
590                 if($('.page-footer')&&$('.page-footer').length>0)\r
591                   $('.page-footer').show();\r
592             });\r
593         } else  {\r
594              $(document).on('focus', 'input, textarea', function () {\r
595                 if($('.page-footer')&&$('.page-footer').length>0)\r
596                   $('.page-footer').hide();\r
597             });\r
598             $(document).on('blur', 'input, textarea', function () {\r
599                 if($('.page-footer')&&$('.page-footer').length>0)\r
600                   $('.page-footer').show();\r
601             });\r
602         }\r
603     }\r
604     //处理滚动到\r
605     var dealScrollTo=function (el, offeset) {\r
606         \r
607     }     \r
608     var dealstartPageLoading=function(message) {\r
609             $('.page-loading').remove();\r
610             $('body').append('<div class="page-loading"><img src="'+ ICTFRAME_CONST_SPINNER_GIF_PATH +'"/>&nbsp;&nbsp;<span>' + (message ? message : $.i18n.prop('com_zte_ums_ict_framework_ui_loading')) + '</span></div>');\r
611         }\r
612     var dealstopPageLoading=function() {\r
613             $('.page-loading').remove();\r
614     }        \r
615     var dealSidebarState = function () {\r
616         // 窗体宽度小尺寸(平板和iphone模式下)时移出左边栏\r
617         var viewport = _getViewPort();\r
618         if (viewport.width < openoFrameWork_smallView) {\r
619             $('body').removeClass("page-sidebar-closed");\r
620         }else{\r
621                         if (getCookie('sidebar_closed') === '1') {\r
622                                 $('body').addClass('page-sidebar-closed');\r
623                         }\r
624                 }\r
625     }\r
626     //  openoFrameWork.addResponsiveHandler()回调函数.\r
627     var runResponsiveHandlers = function () {\r
628         //重新初始化其他订阅的元素elements\r
629         for (var i = 0; i < responsiveHandlers.length; i++) {\r
630             var each = responsiveHandlers[i];\r
631             each.call();\r
632         }\r
633     }\r
634     // 窗体重新调整大小时初始化调整边栏状态高度\r
635     var dealResponsive = function () {\r
636         dealSidebarState();\r
637         ajustHorMenuDropDirection();\r
638         dealSidebarAndContentHeight();\r
639         dealFixedSidebar();\r
640         runResponsiveHandlers();\r
641     }\r
642     // 页面重载入时初始化调整内部布局\r
643     var dealResponsiveOnInit = function () {\r
644         dealSidebarState();\r
645         dealSidebarAndContentHeight();\r
646         setTimeout(function () {\r
647             ajustHorMenuDropDirection(true);\r
648         }, 100);\r
649     }\r
650     // 窗体重新调整大小时初始化调整布局\r
651     var dealResponsiveOnResize = function () {\r
652         var resize;\r
653         if (isIE8) {\r
654             var currheight;\r
655             $(window).resize(function () {\r
656                 if (currheight == document.documentElement.clientHeight) {\r
657                     return; \r
658                 }\r
659                 if (resize) {\r
660                     clearTimeout(resize);\r
661                 }\r
662                 resize = setTimeout(function () {\r
663                     dealResponsive();\r
664                 }, 50);            \r
665                 currheight = document.documentElement.clientHeight; \r
666             });\r
667         } else {\r
668             $(window).resize(function () {\r
669                 if (resize) {\r
670                     clearTimeout(resize);\r
671                 }\r
672                 resize = setTimeout(function () {\r
673                     dealResponsive();\r
674                 }, 50); \r
675             });\r
676         }\r
677     }   \r
678         var changeSiderBar = function(hideAllMenu){\r
679                 var siderbarpos = $(".nav-pos-direction", $(".zte-theme-panel")).val();\r
680                 var sidermenu  = $("#page-sidebar-menu");\r
681                 var hormenu = $("#main_hormenu");\r
682         var fhorMenu = $("#" + fMenuMegaDivId);\r
683         var fsiderMenu = $("#" + fMenuSiderDivId);\r
684                 if(hideAllMenu){\r
685                         sidermenu.css('display','block');// 侧边栏显示\r
686                         hormenu.css("display", "none");//隐藏水平菜单栏\r
687             fhorMenu.css('display','none');\r
688             fsiderMenu.css('display','none');\r
689                         return;\r
690                 }               \r
691 \r
692                 sidermenu.css('display','none');\r
693                 hormenu.css("display", "none");\r
694                 fhorMenu.css('display','block');\r
695                 fsiderMenu.css('display','block');\r
696                 //除了toggle按钮之外,是否还有其他儿子是要显示的,如果没有,那么竖菜单不显示;反之,显示。\r
697                 var lis = fsiderMenu.children(".sidebar-toggler-wrapper").siblings();\r
698                 if(lis.length > 0 && lis.css('display') != "none"){\r
699                         fsiderMenu.css('display','block');\r
700                         $("body").removeClass("page-full-width");\r
701                         if ($('body').hasClass("page-sidebar-closed")) {\r
702                                 $(".page-content").css("marginLeft", _sidebarCollapsedWidth);\r
703                         } else {\r
704                                 $(".page-content").css("marginLeft", _sidebarWidth);\r
705                         }\r
706                 }\r
707         }\r
708     //根据当前菜单在屏幕的位置,和一级菜单下二级菜单的排列,来决定菜单是向左展开还是向右展开\r
709     var ajustHorMenuDropDirection = function( isInit ){\r
710         //获取屏幕宽度\r
711         var bodyWidth = document.body.clientWidth;\r
712         //循环,获取每个一级菜单在屏幕中的位置\r
713         var levelOneAdropdowns = $('a.dropdown-toggle', '#main_hormenu' );\r
714         //每一个文字span的图标、他父亲的margin\padding等占用的位置\r
715         var marginCount = 5 * 2 + 17.5 + 2 * 2 + 30 + 15 * 2 + 3;\r
716         for( var i = 0 ; i < levelOneAdropdowns.length ; i++ ){\r
717             var a = $(levelOneAdropdowns[i]);\r
718             var leftOffset = a.offset().left;\r
719             //获取二级菜单的数量\r
720             var ul = a.parent().children('.dropdown-menu');\r
721             var groupDivs = $('.zteDivWidth' , ul);\r
722             var widthOfDropDownMenu = 0;\r
723             for(var j = 0 ; j < groupDivs.length && groupDivs.length >0 ; j++ ){//循环获取每个分组的宽度\r
724                 var eachDiv = groupDivs[j];\r
725                 var maxLengthText = "";\r
726                 var maxLength = 0;\r
727                 var spans = $('span' , eachDiv).each(function(){\r
728                     var innerText = this.innerText;\r
729                     if( innerText.length > maxLength ){\r
730                         maxLength= innerText.length;\r
731                         maxLengthText = innerText;\r
732                     }\r
733                 });\r
734                 widthOfDropDownMenu = widthOfDropDownMenu + getStringWidth(maxLengthText , 14) + marginCount;\r
735             }\r
736             //预估每个组占宽度150PX,多预计一点\r
737             if( widthOfDropDownMenu + leftOffset > bodyWidth ){\r
738                 console.log("ajust class dropdown-menu-right ,id = "+ a.attr("id") );\r
739                 ul.addClass('dropdown-menu-right');\r
740                 //var right = bodyWidth - (leftOffset + a.width() + 15);\r
741                 //ul.attr('style' ,'right:' + right );\r
742             }else{\r
743                 ul.removeClass('dropdown-menu-right');\r
744                 //ul.removeAttr('style');\r
745             }\r
746         }\r
747     }\r
748     // 屏幕大小发生变化或者移动设备旋转屏幕时处理响应式布局.\r
749     var dealSidebarAndContentHeight = function (isToggler) {\r
750         var content = $('.page-content');               \r
751         var contentbody = $('.page-content-body');\r
752                 var sidebar = $('.page-sidebar');\r
753         var body = $('body');\r
754         var height;\r
755         var viewport = _getViewPort();\r
756                 var scrAvaHeight=Math.min(window.screen.availHeight,viewport.height)-5;\r
757         var footer=$('.footer');                  \r
758         var pgbread=$('.page-breadcrumb');\r
759                 var pageableDiv=$('#pageableDiv');\r
760                 console.log("pageableDiv height:"+pageableDiv.outerHeight(true));\r
761                 var pheader=$('.header');\r
762                 var childPagetype=!!cachedIframesObject.items(_iframe)?cachedIframesObject.items(_iframe).childpageType:"";\r
763                 if(childPagetype==="isc")//smartclient的子页面固定高度为视口可用内容区高度\r
764                 {\r
765                         $('.sidebar-option', panel).val("fixed");\r
766                 }       \r
767                 dealShownav();\r
768                 var available_height =scrAvaHeight - ((!footer||footer.length<=0)?0:footer.outerHeight(true)) - pheader.outerHeight(true);\r
769                 var _pageableDivHeight=(!pageableDiv||pageableDiv.length<=0||pageableDiv.is(":visible")==false)?0:pageableDiv.outerHeight(true);\r
770                 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());\r
771         var miframe=_iframe==""?"page-mainIframe": _iframe;\r
772         var pagemyIframe=$('.page-content .page-content-body .'+miframe); //.page-mainIframe\r
773         if(pagemyIframe&&pagemyIframe.length>0){    \r
774             //处理iframe,下面计算中间iframe的高度\r
775                                 var deviceAgent = navigator.userAgent.toLowerCase();        \r
776                                   if (deviceAgent.match(/(iphone|ipod|ipad)/)) { //||viewport.height<=480\r
777                                        var w=viewport.width-content.offset().left-(pagemyIframe.offset().left-content.offset().left)*2;//宽度=总宽度-左边栏宽度-内容区内边距。左右两个\r
778                                            pagemyIframe.width(w); \r
779                               }\r
780                               //对桌面必须计算高度\r
781                                   var tmp_style = sidebar.attr('style');// firefox下执行 sidebar.height()会改变style样式,这里缓存下执行前的style样式,执行完后重新赋给页面元素\r
782                                   console.log("pym:parent iframe "+miframe+" sidebar.height:"+sidebar.height()+" h:"+h);\r
783                                   h=sidebar.height()>h?sidebar.height():h;\r
784                                   //IE下,把iframe的高度再减掉7,因为IE10及以下版本,计算的高度会比IE实际显示区域大,导致出现IE滚动条。\r
785                                   /*h=h-ICTFRAME_CONST_IFRAME_HEIGHT_AJUST;\r
786                                   if(isIE){\r
787                                         h=h-ICTFRAME_CONST_IFRAME_HEIGHT_AJUST_IE;\r
788                                   }*/\r
789                                 sidebar.attr('style',tmp_style);\r
790                                 if (isDesktop) {\r
791                                     //pagemyIframe.attr("height",h); \r
792                                         if(cachedIframesObject.items(miframe).setMinHeight){\r
793                                                 var minHeight=Math.min(scrAvaHeight,h);\r
794                                                 console.log("pym:parent iframe "+miframe+" window.screen.availHeight:"+scrAvaHeight+" viewport.height:"+viewport.height+" h:"+h+" minHeight:"+minHeight);\r
795                                                 cachedIframesObject.items(miframe).setMinHeight(minHeight);\r
796                                         }\r
797                               }else{ \r
798                                                 //pagemyIframe.attr("height","100%");//去掉这里错误的设置,ipad上测试高度不正确\r
799                                                 var _h=h;\r
800                                                 try{\r
801                                                         _h=pagemyIframe.contents().height();\r
802                                                 }catch(e){}\r
803                                                 h=_h>h?_h:h;\r
804                                                 if(cachedIframesObject.items(miframe).setMinHeight){\r
805                                                         var minHeight=Math.min(scrAvaHeight,h);\r
806                                                         console.log("pym:parent iframe "+miframe+" window.screen.availHeight:"+scrAvaHeight+" viewport.height:"+viewport.height+" h:"+h+" minHeight:"+minHeight);\r
807                                                         cachedIframesObject.items(miframe).setMinHeight(minHeight);\r
808                                                 }\r
809                               }                           \r
810         }\r
811           \r
812         if (body.hasClass("page-footer-fixed") === true && body.hasClass("page-sidebar-fixed") === true) {              \r
813             if (content.height() < available_height) {\r
814                 //content.attr('style', 'min-height:' + available_height + 'px !important');\r
815                                 dealAddStyle(content,'min-height',available_height + 'px',true);\r
816             }\r
817         } else{\r
818           if (body.hasClass("page-footer-fixed") === true && body.hasClass("page-sidebar-fixed") === false) {\r
819               if (content.height() < available_height) {\r
820                   //content.attr('style', 'min-height:' + available_height + 'px !important');\r
821                                   dealAddStyle(content,'min-height',available_height + 'px',true);\r
822               }\r
823           } else {\r
824               if (body.hasClass('page-sidebar-fixed')) {\r
825                   height = _calculateFixedSidebarViewportHeight();\r
826               } else {\r
827                   // firefox下执行 sidebar.height()会改变style样式,这里缓存下执行前的style样式,执行完后重新赋给页面元素\r
828                   var tmp_style = sidebar.attr('style');\r
829                  // height = sidebar.height() + 20;\r
830                   sidebar.attr('style',tmp_style);\r
831                   var headerHeight = pheader.outerHeight(true);\r
832                   var footerHeight = (!footer||footer.length<=0)?0:footer.outerHeight(true);                \r
833                   if ($(window).width() > 1024 && (height + headerHeight + footerHeight)  < scrAvaHeight) {\r
834                       height = scrAvaHeight - headerHeight - footerHeight;\r
835                   }\r
836               }            \r
837               if (height <= content.height()) {//这里为了避免内容区域很小的时候出现内容区域无法充满屏幕,把min-height修改为height\r
838                   //content.attr('style', 'min-height:' + height + 'px !important');\r
839                                   dealAddStyle(content,'min-height',height + 'px',true);\r
840               }\r
841           }\r
842         }\r
843                 // 屏幕小尺寸时会隐藏边栏,这时菜单由小屏幕右上图标控制,当屏幕变化到大尺寸屏幕时,\r
844                 // 需要按原菜单出现方式恢复菜单显示。\r
845                 var screenwidth = $(window).width();\r
846                 if(screenwidth >= openoFrameWork_smallView){\r
847                         changeSiderBar();\r
848                         if($(".page-sidebar-menu li").css('display') != "none"){\r
849                                 if ($('body').hasClass("page-sidebar-closed") && $(".sidebar-toggler").hasClass("close-by-viewportChange")) {   \r
850                                         if( !isToggler ){\r
851                                                 $(".sidebar-toggler")[1].click();\r
852                                         }\r
853                                         $(".sidebar-toggler").removeClass("close-by-viewportChange");\r
854                                 }\r
855                         }\r
856                 }\r
857                 else {\r
858                         changeSiderBar(true);\r
859                 }\r
860     }\r
861     var showIframe=function(iframe){\r
862         var resize,pagemainIframe;             \r
863         if (cachedIframes.count()>0) {\r
864             for (var i in cachedIframes.hash()) {\r
865                 cachedIframes.replace(i,0);\r
866                 var pagemyIframe=$('.page-content .page-content-body .'+i);                           \r
867                             if(pagemyIframe&&pagemyIframe.length>0){\r
868                                         if(iframe==i){\r
869                                                 pagemyIframe.show();\r
870                                                 cachedIframes.replace(i,1);                                                                                                                                             \r
871                                         } else{\r
872                                                 if("page-mainIframe"===i){//2015年12月10日 wimax要求页面切换后删除没有配置cacheNum的缓存页面\r
873                                                         pagemainIframe=i;\r
874                                                         pagemyIframe.attr("src","");\r
875                                                         pagemyIframe.remove();\r
876                                                 }else{\r
877                                                         pagemyIframe.hide();                                            \r
878                                                 }\r
879                                                 cachedIframes.replace(i,0);\r
880                                         }\r
881                             }\r
882             }\r
883         }\r
884                 if(pagemainIframe){\r
885                         delete cachedIframes._hash[pagemainIframe];\r
886                         delete cachedIframesObject._hash[pagemainIframe];\r
887                 }\r
888                 if (!cachedIframes.contains(iframe)) {\r
889                         cachedIframes.add(iframe,1);\r
890             //增加的iframe加载完毕后 停止加载中提示信息\r
891                         myIframe=$('.'+iframe);\r
892                         myIframe.show();\r
893                 myIframe.load(function(){\r
894                     /*if (!isDesktop) {\r
895                     if (resize) {\r
896                         clearInterval(resize);\r
897                     }\r
898                     resize = setInterval(dealIframeHeight, 400,$(this)); \r
899                 }*/\r
900                         openoFrameWork.stopPageLoading();\r
901                 });                                  \r
902         }                                  \r
903     }\r
904         var hidemenu=function(){\r
905                 $('.hor-menu').hide();\r
906                 dealAddStyle($('.page-content'),'margin-left','0px',true);\r
907                 dealAddStyle($('.page-sidebar'),'display','none',true);\r
908         var fsiderMenu = $("#" + fMenuSiderDivId);\r
909         fsiderMenu.children().css('display' , 'none');\r
910         }\r
911         var hideAlarmLight=function(){\r
912                 //$('#header_notification_bar').hide();\r
913                 //$('#header_notification_bar').empty();\r
914                 $('#header_notification_bar').html("<div>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</div>");\r
915         }\r
916         var dealShownav=function(){\r
917         var showNav=openoFrameWork.getLocationURLParameter('showNav');\r
918                 if( showNav=="false"){\r
919             openoFrameWork_showNav = showNav;\r
920                         hidemenu();\r
921                         hideAlarmLight();\r
922                 }\r
923         }\r
924         /*  点击菜单时,处理对应该菜单项的横,左菜单项     */\r
925         var dealRelateMenu = function(source) {\r
926                 // 点击子菜单时,对应的横竖菜单项也联动为选择样式,(高亮,箭头变化)\r
927                 var panel = $('.zte-theme-panel');\r
928                 var navPosOption = $('.nav-pos-direction', panel).val();\r
929                 var targetsource = null;\r
930                 var targetContainer = null;\r
931                 if (navPosOption === "vertical") {\r
932                         // 当前是左菜单,则处理对应的横菜单\r
933                         targetsource = $("#"+source.attr("id"), $("#main_hormenu"));\r
934                         targetContainer = $(".header ul");                              \r
935                 } else if (navPosOption === "horizontal") {\r
936             var rtn = dealMgaBarRelated(source);\r
937                         dealFMenuRelated(source , megaSiderDivId);\r
938             targetContainer = rtn[0];\r
939             targetsource = rtn[1];\r
940                 }else if(navPosOption === openoFrameWork_menu_fmenu){\r
941             dealFMenuRelated(source , fMenuSiderDivId);\r
942         }\r
943                 if (targetContainer) {\r
944                         // 移除原有菜单项的活动及箭头样式\r
945                         targetContainer.children('li.active').removeClass('active');\r
946                         targetContainer.find('.arrow.open').removeClass('open');\r
947                 }\r
948                 if (targetsource) {\r
949                         // 增加活动及箭头样式\r
950                         targetsource.parents('li').each(function () {\r
951                                 $(this).addClass('iframe active');\r
952                                 $(this).find('a > span.arrow').addClass('open');\r
953                         });\r
954                         targetsource.parents('li').addClass('active');\r
955                         if (navPosOption === "horizontal") {\r
956                                 if (targetsource.parent().parent().parent().is("li")) {\r
957                                         $('.arrow', targetsource.parent().parent().parent()).addClass("open");\r
958                                 }\r
959                         }\r
960                 }\r
961         }\r
962     var dealMgaBarRelated = function(source){\r
963         // 当前是横菜单,则处理对应的左菜单\r
964         targetsource = $("#"+source.attr("id"), $("[class='page-sidebar-menu']"));\r
965         targetContainer = $("#page-sidebar-menu ul");\r
966         // 将先前左菜单展开的子菜单收缩\r
967         $("li.open",targetContainer).each(function() {\r
968             var style = $("ul.sub-menu", this).attr("style");\r
969             if (style) {\r
970                 $("ul.sub-menu", this).removeAttr("style");\r
971                 $(this).removeClass('open');\r
972             }\r
973         });\r
974         // 当前是横菜单,但在屏幕缩小的情况下显示的是tip垂直菜单,而横菜单是隐藏的,所以需额外处理横菜单\r
975         if (source.parent().parent().parent().parent().attr("class").indexOf("page-sidebar-menu") >= 0) {\r
976             var tiptargetsource = $("#"+source.attr("id"), $("#main_hormenu"));\r
977             var tiptargetContainer = $(".header ul");\r
978             tiptargetContainer.children('li.active').removeClass('active');\r
979             tiptargetContainer.find('.arrow.open').removeClass('open');\r
980             tiptargetsource.parents('li').each(function () {\r
981                 $(this).addClass('iframe active');\r
982                 $(this).find('a > span.arrow').addClass('open');\r
983             });\r
984             tiptargetsource.parents('li').addClass('active');\r
985         }\r
986         return [targetContainer ,targetsource ];\r
987     }\r
988     var dealFMenuRelated = function(source , siderDivId ){\r
989         var fsiderMenu = $("#" + siderDivId);\r
990                 if(isMoreMenuItemClick){//更多菜单点击 , 临时方案,增加信号量,使用之后就置为false\r
991                         isMoreMenuItemClick = false \r
992                 }else if($(source).parents('li').hasClass('mega-menu-dropdown')){//F的横向菜单的点击\r
993             var id = source.attr('id');            \r
994             //非被点击的一级菜单的二级菜单都不显示\r
995             $('#' + siderDivId + '>li').hide();\r
996             var level2Lis =  $("a[hparentid= " + id + "]" , fsiderMenu).parent();\r
997             level2Lis.show();\r
998             if(level2Lis.length > 0){//把竖向菜单的收起放大按钮显示出来\r
999                 $('#' + siderDivId + '>li.sidebar-toggler-wrapper').show();\r
1000             }\r
1001             if($("a[hparentid= " + id + "]" , fsiderMenu).length > 0){ //有子孙菜单时,把F菜单的竖菜单显示出来\r
1002                 dealFSidermenu(source ,siderDivId );\r
1003             }else{//否则隐藏竖菜单\r
1004                 fsiderMenu.css('display','none');\r
1005                 $("body").addClass("page-full-width");\r
1006                 $(".page-content").css("marginLeft", _sidebarWidth);\r
1007             }\r
1008 \r
1009         }else{//F菜单的竖向菜单点击\r
1010             //处理一种特殊情况,告警灯打开新页面,所有的菜单都不出现,因此,虽然这个source在竖菜单,但竖菜单这个时候实际上是没有显示的\r
1011             if( openoFrameWork_showNav == "true") {\r
1012                 $('#' + siderDivId + '>li').hide();     \r
1013                                 var lis = $(source).parents('li');      \r
1014                                 var id = lis.eq(lis.length-1).children( 'a' ).attr('hparentid');                                \r
1015                 //var id = $(source).parents('li').children('a').attr('hparentId');\r
1016                 var level2Lis =  $("a[hparentid=" + id + "]" , fsiderMenu).parent();\r
1017                 level2Lis.show();\r
1018                 if(level2Lis.length > 0) {//把竖向菜单的收起放大按钮显示出来\r
1019                     $('#'+ siderDivId + '>li.sidebar-toggler-wrapper').show();\r
1020                 }\r
1021                 //$('#' + siderDivId + '>li')[0].show();\r
1022                 dealFSidermenu(source , siderDivId);\r
1023             }\r
1024         }\r
1025     }\r
1026     var dealFSidermenu = function(source , siderDivId){\r
1027         var fsiderMenu = $("#" + siderDivId);\r
1028         fsiderMenu.css('display','block');\r
1029                 $('ul.sub-menu',fsiderMenu).css('display','block');\r
1030                 $('.arrow',fsiderMenu).addClass('open');\r
1031         $("body").removeClass("page-full-width");\r
1032         if ($('body').hasClass("page-sidebar-closed")) {\r
1033             $(".page-content").css("marginLeft", _sidebarCollapsedWidth);\r
1034         } else {\r
1035             $(".page-content").css("marginLeft", _sidebarWidth);\r
1036         }\r
1037         var href = source.attr("href");\r
1038         $('li.iframe' ,fsiderMenu ).removeClass('active');\r
1039         var selectedIframeLi = $("a[href ='" + href + "']"  ,fsiderMenu ).parent();\r
1040         selectedIframeLi.addClass('active');\r
1041         selectedIframeLi.parent().parent().addClass("open").addClass("active");\r
1042         selectedIframeLi.parent().css('display','block');\r
1043         selectedIframeLi.parent().parent().children('a').children('.arrow').addClass('open');\r
1044     }\r
1045         var dealMenuItemClick=function(source,e,menuContainerStr){\r
1046             var url = source.attr("href");\r
1047             if(!url||url.length<2)\r
1048               return;            \r
1049             e.preventDefault();                         \r
1050                         if(!_isClicked){//导航情况下,首先要模拟点开菜单分组\r
1051                                 _isClicked=true;//如果菜单有子菜单点击一次来展开子菜单,注意这个信号量的变化,避免死循环\r
1052                                 var mainMenu=source.parents('li').last();\r
1053                                 if(!mainMenu.hasClass('open')){\r
1054                                         dealLiAClick(mainMenu.children('a:eq(0)'));\r
1055                                 }\r
1056                         }                       \r
1057                         if(menuContainerStr&&menuContainerStr.length>0){\r
1058                                 var menuContainer = $('.'+menuContainerStr+' ul');\r
1059                                 \r
1060                                 menuContainer.children('li.active').removeClass('active');\r
1061                                 // menuContainer.children('arrow.open').removeClass('open');\r
1062                                 //menuContainer.find('.arrow.open').addClass('open');\r
1063                         }\r
1064                         source.parents('li').each(function () {\r
1065                 $(this).addClass('iframe active');\r
1066                 $(this).children('a > span.arrow').addClass('open');\r
1067             });\r
1068             source.parents('li').addClass('active');                    \r
1069                         // 处理点击菜单对应的横或左菜单项的选择样式\r
1070                         dealRelateMenu(source);                 \r
1071             if(menuContainerStr&&menuContainerStr.length>0){\r
1072                                 if ($(window).width() <= 991 && $('.'+menuContainerStr).hasClass("in")) {\r
1073                                         $('.navbar-toggle').click();\r
1074                                 } \r
1075                         }                       \r
1076             if(dealMultTabPage(source)) \r
1077                 return true;              \r
1078             dealScrollTo();\r
1079             var breadmenuID=e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:"";\r
1080                         if(breadmenuID.length>0){//面包削导航来的,只需要重新生成面包削即可                         \r
1081                                 //找到更多菜单按钮\r
1082                                 var moreMenuItem = $('#' + breadmenuID , $('#pageableDiv'));\r
1083                                 if( moreMenuItem.length == 0 ){\r
1084                                         moreMenuItem = $('#' + breadmenuID , $('.more-botton-zone'));\r
1085                                 }\r
1086                                 dealBreadcrumbBtnMenuItemClick(moreMenuItem,e); \r
1087                                 //dealBreadcrumb(source,false,e); \r
1088                         }else{//非面包削导航来的,\r
1089                                 dealstartPageLoading();                         \r
1090                                 if(dealIframe(source,e))//当返回true时说明是正常加载iframe了,否则面包削不能切换\r
1091                                         dealBreadcrumb(source,false,e);\r
1092                         }\r
1093                         //dealShownav();\r
1094     };  \r
1095         var dealMenuItemGetFocus=function(source,e,menuContainerStr){\r
1096             var url = source.attr("href");\r
1097             if(!url||url.length<2)\r
1098               return;            \r
1099             e.preventDefault();                 \r
1100                         if(!_isClicked){//导航情况下,首先要模拟点开菜单分组\r
1101                                 _isClicked=true;//如果菜单有子菜单点击一次来展开子菜单,注意这个信号量的变化,避免死循环\r
1102                                 var mainMenu=source.parents('li').last();\r
1103                                 dealLiAClick(mainMenu.children('a:eq(0)'));\r
1104                         }                       \r
1105                         if(menuContainerStr&&menuContainerStr.length>0){\r
1106                                 var menuContainer = $('.'+menuContainerStr+' ul');\r
1107                                 \r
1108                                 menuContainer.children('li.active').removeClass('active');\r
1109                                 menuContainer.children('arrow.open').removeClass('open');\r
1110                         }\r
1111                         source.parents('li').each(function () {\r
1112                 $(this).addClass('iframe active');\r
1113                 $(this).children('a > span.arrow').addClass('open');\r
1114             });\r
1115             source.parents('li').addClass('active');\r
1116                         \r
1117             if(menuContainerStr&&menuContainerStr.length>0){\r
1118                                 if ($(window).width() <= 991 && $('.'+menuContainerStr).hasClass("in")) {\r
1119                                         $('.navbar-toggle').click();\r
1120                                 } \r
1121                         }\r
1122     };  \r
1123      //处理iframe的核心处理类,逻辑较为复杂,注意各种参数的处理\r
1124     var dealIframe=function(aObject,e){\r
1125                         _hashSource="";\r
1126             var url = aObject.attr("href");\r
1127             if(!url||url.length<2)\r
1128               return;\r
1129                         url=openoFrameWork.handlBaseURL(url);\r
1130                     //-----------2015年9月21日新增V5中大O需要的按照实例(根据选择的系统实例变化url的ip和端口地址)进行动态切换菜单的功能\r
1131                     var category= aObject.attr("category");//处理菜单中定义的Category属性\r
1132                         if(category&&category.length>0){//处理Category属性\r
1133                                 var newIpPort=_menuCategorys.items(category);\r
1134                                 if(newIpPort&&newIpPort.ipPort&&newIpPort.ipPort.trim()!=""){//如果找到了\r
1135                                         var newIpPortstr=openoFrameWork.getDomainURL(newIpPort.ipPort);//去掉ip和port后多余的部分\r
1136                                         var urlipport=openoFrameWork.getDomainURL(url);\r
1137                                         console.log("old url:"+url);\r
1138                                         url=newIpPortstr+url.replace(urlipport,"");\r
1139                                         console.log("newIpPort:"+newIpPortstr+"      newURL:"+url);                                     \r
1140                                 }                               \r
1141                         }\r
1142                         //------------\r
1143             dealstartPageLoading();\r
1144             var cacheNum= aObject.attr("cacheNum");//当第三方应用需要框架缓存曾经打开过的页面时使用。\r
1145             var shiftJS= aObject.attr("shiftJS");//当第三方应用不需要后面的href页面进行重新加载仅仅执行某个脚本打开某个功能时使用\r
1146                         var _iframeName= aObject.attr("iframeName");//对有些第三方应用设置了顶层frame名字的,这个必须设置\r
1147                         var _iframeAutoScroll= aObject.attr("iframeAutoScroll");//设置iframe的滚动条是否出现,可以设置为auto,yes或者no,默认为no 不出现.\r
1148                         _iframeAutoScroll=!!_iframeAutoScroll?(_iframeAutoScroll==='yes'?'yes':_iframeAutoScroll==='auto'?'auto':'no'):'no';\r
1149                         _xdomain= aObject.attr("xdomain");//对有些第三方应用如果跨域了,需要设置这个信任域属性,以便于来跨域通讯.这里取值是一个正则表达式\r
1150                         _xdomain=_xdomain&&_xdomain.length>0?_xdomain:"*";\r
1151                         var _cssfile= aObject.attr("cssSrc");//设置iframe中页面需要动态加载的css文件.\r
1152                         _cssfile=(_cssfile&&_cssfile.length>0)?_cssfile:"";\r
1153                         var _runShiftJS="";\r
1154                         var pageContentBody=$('.page-content .page-content-body');\r
1155                         var tabHtml="";                 \r
1156                         var tabContentHtml="";\r
1157                         var tabID="";\r
1158                         var tabContentID="";\r
1159             var iframename='';\r
1160                         function createIframe(pdiv,url,id,name,clsname,xdom,autoScroll){\r
1161                                 var pymParent = new pym.Parent(pdiv, url, {xdomain:xdom});\r
1162                                 pymParent.iframe.id=id;\r
1163                                 pymParent.iframe.name=name;\r
1164                                 //pymParent.iframe.setAttribute('display', "none");\r
1165                                 //pymParent.iframe.style.height="100%";\r
1166                                 //pymParent.iframe.setAttribute('height', "100%");\r
1167                                 pymParent.iframe.setAttribute('class', clsname);\r
1168                                 pymParent.iframe.setAttribute('allowfullscreen','');\r
1169                                 pymParent.iframe.setAttribute('mozallowfullscreen','');\r
1170                                 pymParent.iframe.setAttribute('oallowfullscreen','');\r
1171                                 pymParent.iframe.setAttribute('msallowfullscreen','');\r
1172                                 pymParent.iframe.setAttribute('webkitallowfullscreen',''); \r
1173                                 //pymParent.iframe.setAttribute('scrolling',autoScroll);\r
1174                                 pymParent.iframe.setAttribute('onload', 'openoFrameWork.SyncCSS(this,0,"'+_cssfile+'");openoFrameWork.stopPageLoading();');\r
1175                                 cachedIframesObject.replace(id,pymParent);//缓存iframe对象实体\r
1176                                 pymParent.onMessage('height', function(he){\r
1177                                           console.log("The frame "+id+" receive message height is "+he);\r
1178                                           var pagemyIframe=$('.page-content .page-content-body .'+id);\r
1179                                           var h=Math.max(this.minHeight,he);\r
1180                                           pagemyIframe.height(h);\r
1181                                 });\r
1182                                 return pymParent;\r
1183                         };              \r
1184                         \r
1185             if(cacheNum){//处理缓存iframe和iframename标签\r
1186                 cacheNum="page-mainIframe"+cacheNum; \r
1187                                 iframename="fraMain"+cacheNum;                \r
1188             }else{\r
1189                 cacheNum="page-mainIframe";\r
1190                                 iframename="fraMain";        \r
1191             }\r
1192                         iframename=!!_iframeName?_iframeName:iframename;\r
1193             _iframe= cacheNum;//注意这里_iframe是一个全局变量\r
1194                 \r
1195             var miframe=_iframe==""?"page-mainIframe": _iframe;\r
1196             var pagemyIframe=$('.page-content .page-content-body .'+miframe);\r
1197                         var nagivJS=e&&e.data&&e.data.action?e.data.action:"";\r
1198                         nagivJS=(!!nagivJS&&nagivJS.length>0)?(nagivJS.trim().toLowerCase()=="null"?nagivJS:"javascript:$('.page-content .page-content-body ."+miframe+"')[0].contentWindow."+nagivJS.trim()+";"):"";      \r
1199                         nagivJS=nagivJS.trim();\r
1200                         \r
1201                         _runShiftJS=(!!shiftJS&&shiftJS.length>0)?(shiftJS.trim().toLowerCase()=="null"?shiftJS:"javascript:$('.page-content .page-content-body ."+miframe+"')[0].contentWindow."+shiftJS+";"):"";      \r
1202                         if(pagemyIframe&&pagemyIframe.length>0){//如果iframe已经添加了,则直接更改url或者执行切换或导航函数\r
1203                             var src=pagemyIframe.attr("src");                                   \r
1204                             if((!!shiftJS||nagivJS.length>0)&&(src==url||src.split('?')[0]==url.split('?')[0])&& cacheNum!="page-mainIframe") {    //url相同时,处理缓存shiftJS标签\r
1205                                         //这里shiftJS必须定义iframe中的页面定义到window上的函数;\r
1206                                         //pagemyIframe.attr("scrolling",_iframeAutoScroll);\r
1207                                         cachedIframesObject.items(miframe).settings.xdomain=_xdomain;   \r
1208                                         if(nagivJS.length>0&&nagivJS.toLowerCase()!="null")\r
1209                                                 _runShiftJS=nagivJS;//如果是nagivJS导航过来的,nagivJS优先级高于shiftJS,如果有nagivJS就用nagivJS替换_runShiftJS; 直接执行一次导航切换\r
1210                                         try{    \r
1211                                                 if(_runShiftJS.trim().toLowerCase()!="null")\r
1212                                                         eval(_runShiftJS);\r
1213                                         }catch(e){\r
1214                                                 if  (e  instanceof  EvalError)   {\r
1215                                                         console.log(e.name  +   " EvalError:  "   +  e.message);\r
1216                                                 }   else   if  (e  instanceof  SyntaxError)   {\r
1217                                                         console.log(e.name  +   " SyntaxError:  "   +  e.message);\r
1218                                                 }else   if  (e  instanceof  Error)   {\r
1219                                                     if(e.name.toLowerCase().trim()=="typeerror")\r
1220                                                         {\r
1221                                                            //console.log($.i18n.prop('com_zte_ums_ict_framework_ui_clickTooFast'));\r
1222                                                                 var parm={runShiftJS:_runShiftJS};\r
1223                                                                 pagemyIframe.one('load',parm,function(e){ \r
1224                                                                         var runShiftJS=e&&e.data&&e.data.runShiftJS?e.data.runShiftJS:"";\r
1225                                                                         if(runShiftJS.length>0&&runShiftJS.toLowerCase()!="null")\r
1226                                                                                 eval(runShiftJS);//点击太快了,页面没有加载完毕,那就加载完毕了再次执行\r
1227                                                                 })\r
1228                                                         }                                                       \r
1229                                                 } \r
1230                                                 return false;//返回false 后续不再做其他动作了\r
1231                                         }\r
1232                                         finally{\r
1233                                                 openoFrameWork.stopPageLoading();\r
1234                                         }\r
1235                                 }else{//否则url不同,或者url相同但没有shiftjs\r
1236                                         if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是代码导航过来的去掉url参数中的默认action动作\r
1237                                                 url=url.split('?')[0];//去掉?参数,防止默认执行动作,只响应nagivJS指定的动作;\r
1238                                         }\r
1239                                         if(src.split('#')[0]!=url.split('#')[0])//如果相等说明是通过锚点导航的,真实url没有变化,对SPA应用比较普遍\r
1240                                         {\r
1241                                                 pagemyIframe.attr("src","");//url和src不同说明更换了页面,需要清空重新加载\r
1242                                         }else //if (src.trim()==url.trim()) //没有shiftjs并且url相同,说明不需要再次加载了,已经加载过了\r
1243                                         {\r
1244                                                 openoFrameWork.stopPageLoading();\r
1245                                         }       \r
1246                                         pagemyIframe.attr("src",url);\r
1247                                         \r
1248                                         if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是nagivJS导航过来的,iframe加载完毕后执行一次导航切换脚本\r
1249                                                 var parm={nagivJS:nagivJS};\r
1250                                                 pagemyIframe.one('load',parm,function(e){ \r
1251                                                         var nagivJS=e&&e.data&&e.data.nagivJS?e.data.nagivJS:"";\r
1252                                                         if(nagivJS.length>0&&nagivJS.toLowerCase()!="null")\r
1253                                                                 eval(nagivJS);//如果没有加载过,加载后也要执行跳转的函数\r
1254                                                 });                                             \r
1255                                         }\r
1256                                         if(_cssfile.length>0&&_cssfile.toLowerCase()!="null"){//如果配置了cssSrc,每次切换都重新执行一边这个css文件,防止有遗漏\r
1257                                                 parm={syncCSSJS:'openoFrameWork.SyncCSS(this,10,"'+_cssfile+'");openoFrameWork.stopPageLoading();'};\r
1258                                                 pagemyIframe.one('load',parm,function(e){ \r
1259                                                         var syncCSSJS=e&&e.data&&e.data.syncCSSJS?e.data.syncCSSJS:"";\r
1260                                                         if(syncCSSJS.length>0&&syncCSSJS.toLowerCase()!="null")\r
1261                                                                 eval(syncCSSJS);\r
1262                                                 });\r
1263                                         }                                       \r
1264                                 }\r
1265                                 \r
1266                         }else{//否则添加新的iframe元素     overflow:visible;\r
1267                                 if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是代码导航过来的去掉url参数中的默认action动作\r
1268                                                 url=url.split('?')[0];//去掉?参数,防止默认执行动作,只响应nagivJS指定的动作;\r
1269                                 }\r
1270                                 var pdiv="pdiv_"+miframe;\r
1271                                 if($("#"+pdiv).length<=0){//检查下,如果该div没有添加过就添加\r
1272                                         pageContentBody.append("<div id='"+pdiv+"' style='height:800px;overflow:auto'></div>");\r
1273                                 }       \r
1274                                 dealstartPageLoading();                                 \r
1275                                 pymParent=createIframe(pdiv, url,miframe,miframe,miframe,_xdomain,_iframeAutoScroll);                           \r
1276                                 pagemyIframe=$(pymParent.iframe);\r
1277                                 \r
1278                                 if(nagivJS.length>0&&nagivJS.toLowerCase()!="null"){//如果是nagivJS导航过来的,iframe加载完毕后执行一次导航切换\r
1279                                         var parm={nagivJS:nagivJS};\r
1280                                         pagemyIframe=$('.page-content .page-content-body .'+miframe);\r
1281                                         if(pagemyIframe&&pagemyIframe.length>0){        \r
1282                                                 pagemyIframe.one('load',parm,function(e){ \r
1283                                                         var nagivJS=e&&e.data&&e.data.nagivJS?e.data.nagivJS:"";\r
1284                                                         if(nagivJS.length>0&&nagivJS.toLowerCase()!="null")\r
1285                                                                 eval(nagivJS);//如果没有加载过,加载后也要执行跳转的函数\r
1286                                                 })\r
1287                                         }\r
1288                                 }                       \r
1289                                 \r
1290                         }                                       \r
1291             showIframe(miframe);                  \r
1292             openoFrameWork.fixContentHeight(); // 调整高度  \r
1293                         return true;\r
1294    }\r
1295     // 处理边栏菜单\r
1296         var dealLiAClick=function(source){\r
1297                 if (source.next().hasClass('sub-menu') == false) {\r
1298                         if ($('.btn-navbar').hasClass('collapsed') == false) {\r
1299                                 $('.btn-navbar').click();\r
1300                         }\r
1301                         return;\r
1302                 }\r
1303 \r
1304                 if (source.next().hasClass('sub-menu always-open')) {\r
1305                         return;\r
1306                 }\r
1307                 var parent = source.parent().parent();\r
1308                 var the = source;\r
1309                 var menu = $('.page-sidebar-menu');\r
1310                 var sub = source.next();\r
1311                 var autoScroll = menu.data("auto-scroll") ? menu.data("auto-scroll") : true;\r
1312                 var slideSpeed = menu.data("slide-speed") ? parseInt(menu.data("slide-speed")) : 200;\r
1313                 parent.children('li.open').children('a').children('.arrow').removeClass('open');\r
1314                 parent.children('li.open').children('.sub-menu:not(.always-open)').slideUp(200);\r
1315                 parent.children('li.open').removeClass('open');         \r
1316                 var slideOffeset = -200;\r
1317                 if (sub.is(":visible")) {\r
1318                         $('.arrow', source).removeClass("open");\r
1319                         source.parent().removeClass("open");\r
1320                         sub.slideUp(slideSpeed, function () {\r
1321                                 if (autoScroll == true && $('body').hasClass('page-sidebar-closed') == false) {\r
1322                                         if ($('body').hasClass('page-sidebar-fixed')) {\r
1323                                                 \r
1324                                         } else {\r
1325                                                 dealScrollTo(the, slideOffeset);\r
1326                                         }\r
1327                                 }\r
1328                                 dealSidebarAndContentHeight();\r
1329                         });\r
1330                 } else {\r
1331                         $('.arrow', source).addClass("open");\r
1332                         source.parent().addClass("open");\r
1333                         sub.slideDown(slideSpeed, function () {\r
1334                                 if (autoScroll == true && $('body').hasClass('page-sidebar-closed') == false) {\r
1335                                         if ($('body').hasClass('page-sidebar-fixed')) {\r
1336                                                 dealScrollTo(the, slideOffeset);\r
1337                                         }\r
1338                                 }\r
1339                                 dealSidebarAndContentHeight();\r
1340                         });\r
1341                 }       \r
1342         }       \r
1343     var dealSidebarMenu = function () {//这里注册和处理边栏菜单的各类点击事件\r
1344         $('.page-sidebar').on('click', 'li > a', function (e) {\r
1345             if ($(this).next().hasClass('sub-menu') == false) {\r
1346                 if ($('.btn-navbar').hasClass('collapsed') == false) {\r
1347                     $('.btn-navbar').click();\r
1348                 }\r
1349                 return;\r
1350             }\r
1351             if ($(this).next().hasClass('sub-menu always-open')) {\r
1352                 return;\r
1353             }\r
1354             dealLiAClick($(this));\r
1355             e.preventDefault();\r
1356         });\r
1357 \r
1358         // 处理左边导航中的菜单连接,显示在iframe中\r
1359         $('.page-sidebar').on('click', ' li > a.iframe', function (e) {\r
1360                         //dealMenuItemClick($(this),e,"page-sidebar")\r
1361                         e.preventDefault();\r
1362                         var menuItemID=$(this).attr("id");\r
1363                         if(!!menuItemID&&menuItemID.length>0){\r
1364                                 _setLocationHash(menuItemID);\r
1365                                 _hashSource="dhByInterface";                            \r
1366                         }//else{\r
1367                         _isClicked=true;\r
1368                         dealMenuItemClick($(this),e,"page-sidebar");\r
1369                         //}     \r
1370                 }); \r
1371         // 处理更多菜单的菜单连接,显示在iframe中dropdown-menu\r
1372         $('.page-breadcrumb').on('click', ' li > a.iframe', function (e) {\r
1373                         var url = $(this).attr("href");\r
1374                         if(url.length<2)\r
1375                           return;\r
1376                         e.preventDefault();\r
1377                         dealBreadcrumbBtnMenuItemClick($(this),e);                      \r
1378                 }); \r
1379         // 处理可翻页更多菜单中的菜单连接,显示在iframe中dropdown-menu\r
1380         $('#pageableDiv').on('click', ' div > a.iframe', function (e) {\r
1381                         var url = $(this).attr("href");\r
1382                         if(url.length<2)\r
1383                           return;\r
1384                         e.preventDefault();\r
1385                         dealBreadcrumbBtnMenuItemClick($(this),e);                      \r
1386                 }); \r
1387                 // 处理可翻页更多菜单中的菜单连接,显示在iframe中dropdown-menu\r
1388         $('#pageableDiv').on('click', ' li > a.iframe', function (e) {\r
1389                         var url = $(this).attr("href");\r
1390                         if(url.length<2)\r
1391                           return;\r
1392                         e.preventDefault();\r
1393                         if(e.target){\r
1394                                 var tg=$("span",e.target);\r
1395                                 tg=tg.length>0?tg[0]:e.target;\r
1396                                 $(".open a>div>span",e.target.parentNode.parentNode.parentNode.parentNode.parentNode).replaceWith(tg.outerHTML);\r
1397                         }\r
1398                         dealBreadcrumbBtnMenuItemClick($(this),e);                      \r
1399                 });     \r
1400                         \r
1401          // 处理header下拉菜单中的菜单连接,显示在iframe中\r
1402          $('.dropdown').on('click', ' li > a.iframe', function (e) {\r
1403                         var url = $(this).attr("href");\r
1404                         if(url.length<2)\r
1405                           return;\r
1406                         e.preventDefault();\r
1407                         dealScrollTo();\r
1408                         dealstartPageLoading();\r
1409                         \r
1410                         dealIframe($(this),e)\r
1411                         dealBreadcrumb($(this),false,e);                        \r
1412                 });\r
1413     }      \r
1414         var getSceneURL=function(url){\r
1415                 if(url&&url.trim().length>0){\r
1416                         url=url.trim();\r
1417                         //url=\r
1418                         _sceneURLRootPath=_sceneURLRootPath+url;\r
1419                 }\r
1420         }       \r
1421         var gurl="";//临时全局变量,存储当前加载的more菜单,如果加载过了,就不再加载了。下面的方法中会用到      \r
1422         var moreMenusisLoaded=true;\r
1423         var waittime=null;\r
1424     var getBreadcrumbRightButtons=function(url,e){                                      \r
1425                         if (url.length<2){\r
1426                                 return;\r
1427                         }\r
1428                         url=openoFrameWork.handlBaseURL(url);\r
1429                         if (gurl==url){                         \r
1430                                 if(e===true){\r
1431                                         $('#pageableDiv').show();\r
1432                                 }else if(e&&e.target&&e.currentTarget){\r
1433                                         var defaultDisplay=$(e.target).attr("defaultDisplay");\r
1434                                         defaultDisplay=(!defaultDisplay)?$(e.currentTarget).attr("defaultDisplay"):defaultDisplay;\r
1435                                         if(defaultDisplay&&defaultDisplay.trim()=="false"){\r
1436                                                 $('#pageableDiv').hide();\r
1437                                         }else{\r
1438                                                 $('#pageableDiv').show();\r
1439                                         }\r
1440                                 }\r
1441                                 return;\r
1442                                 \r
1443                         }else{\r
1444                                 gurl=url;\r
1445                                 clearMoreOperations();\r
1446                         }\r
1447                         //处理e参数,注意e可能为null\r
1448                         var breadmenuID=e&&e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:"";\r
1449                         breadmenuID=breadmenuID.length<=0?(e&&e.breadcrumbBtnMenuItem&&e.breadcrumbBtnMenuItem.length>0?e.breadcrumbBtnMenuItem:""):breadmenuID;\r
1450             moreMenusisLoaded=false;\r
1451             $.ajax({\r
1452                 type: "GET",\r
1453                 cache: false,\r
1454                 url: url,\r
1455                 dataType: "html", \r
1456                 success: function (res) {\r
1457                                         try{\r
1458                                                 //$('.page-breadcrumb').append(res);                                    \r
1459                                                 var resScriptsSriped = stripHtmlScripts(res);\r
1460                                                 //$('.page-breadcrumb').append(resScriptsSriped);\r
1461                                                 $('.more-botton-zone').children().remove();\r
1462                                                 //V5新增逻辑,如果displayType = pageableDiv,那么就用滑动的DIV来显示更多菜单里面的内容,如果没有配置,或为其他值,就按原有方式显示\r
1463                                                 var tempDiv = $('<div style="display:none"></div>');\r
1464                                                 tempDiv.children().remove();\r
1465                                                 tempDiv.append(resScriptsSriped);\r
1466                                                 \r
1467                                                 //获取UL属性\r
1468                                                 var displayType = $('.dropdown-menu',tempDiv).attr('displayType');\r
1469                                                 if( displayType && displayType != 'pageableDiv'){\r
1470                                                         $('.more-botton-zone').append(resScriptsSriped);\r
1471                                                         $('#pageableDiv').hide();                                               \r
1472                                                 }else{\r
1473                                                         var tempUl = $('.dropdown-menu',tempDiv);\r
1474                                                         if(tempUl.length>0){\r
1475                                                                 moreOperations(tempUl[0]);                                                      \r
1476                                                                 if(e&&e.target&&e.currentTarget){\r
1477                                                                         var defaultDisplay=$(e.target).attr("defaultDisplay");\r
1478                                                                         defaultDisplay=(!defaultDisplay)?$(e.currentTarget).attr("defaultDisplay"):defaultDisplay;\r
1479                                                                         if(defaultDisplay&&defaultDisplay.trim()=="false"){\r
1480                                                                                 $('#pageableDiv').hide();\r
1481                                                                         }else{\r
1482                                                                                 $('#pageableDiv').show();                                                       \r
1483                                                                         }\r
1484                                                                 }\r
1485                                                         }\r
1486                                                 }                                       \r
1487                                                 runHtmlScripts(res);                                            \r
1488                                         }catch(ex){\r
1489                                         }finally{\r
1490                                                 moreMenusisLoaded=true;                    \r
1491                                         }\r
1492                                         groupButtonAuthentication();\r
1493                                         if(breadmenuID.length>0){//面包削导航来的,只需要重新生成面包削即可\r
1494                                                 var menuitem=undefined;\r
1495                                                 var panel = $('.zte-theme-panel');\r
1496                                                 var navPosOption = $('.nav-pos-direction', panel).val();\r
1497                                                 //var items=$("a[id='"+breadmenuID+"']");\r
1498                                                 var items = undefined;\r
1499                                                 if (navPosOption === "vertical"){ //从垂直菜单里面找\r
1500                                                         items=$("#page-sidebar-menu a[id='"+breadmenuID+"']");\r
1501                                                         \r
1502                                                 }else{//从水平菜单里面找\r
1503                                                         items=$(".hor-menu a[id='"+breadmenuID+"']");\r
1504                                                 }\r
1505                                                 if (!items || items.length < 1) {\r
1506                                                         items=$(".page-content a[id='"+breadmenuID+"']");\r
1507                                                 }                                               \r
1508                                                 if(items.length>0){\r
1509                                                         for(var i=0;i<items.length;i++){\r
1510                                 if($(items[i]).parentsUntil('.more-botton-zone .btn-group').hasClass('dropdown-menu')){\r
1511                                                                         menuitem=$(items[i]);\r
1512                                                                         break;\r
1513                                                                 }\r
1514                                                                 if($(items[i]).parentsUntil('#pageableDiv').hasClass('row1')){\r
1515                                                                         menuitem=$(items[i]);\r
1516                                                                         break;\r
1517                                                                 }                                                               \r
1518                                                         }\r
1519                                                 }\r
1520                                                 if(!!menuitem&&menuitem.length>0)\r
1521                                                         dealBreadcrumbBtnMenuItemClick(menuitem,e);     \r
1522                                         }                    \r
1523                 },\r
1524                                 error: function (xhr, ajaxOptions, thrownError) {//加载操作菜单失败!com_zte_ums_ict_framework_ui_loadmenuerror\r
1525                     $('.page-breadcrumb').append('<h4>'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');\r
1526                                         moreMenusisLoaded=true;\r
1527             }\r
1528         });\r
1529     }        \r
1530     \r
1531         //处理多tab也场景   ----redirect 该标签暂时保留,不建议使用了\r
1532     dealMultTabPage=function(clickedObject){\r
1533             var url = clickedObject.attr("href");\r
1534             if(!url||url.length<2)\r
1535               return;\r
1536            var redirect=clickedObject.attr("redirect"); //处理多tab页面的需求\r
1537            if (!!redirect&&redirect.length>0){\r
1538                  var miframe=_iframe==""?"page-mainIframe": _iframe;\r
1539                  var pagemyIframe=$('.page-content .page-content-body .'+miframe); //.page-mainIframe\r
1540                  //var pagemyIframe=$('.page-content .page-content-body .page-mainIframe');\r
1541                  var oldhref="";\r
1542                                    if(pagemyIframe&&pagemyIframe.length>0){\r
1543                     oldhref=pagemyIframe.attr("src");\r
1544                     if(url.split("?")[0]==oldhref.split("?")[0])\r
1545                     {\r
1546                       eval(redirect);                      \r
1547                       dealBreadcrumb(clickedObject,false,e);\r
1548                       return true; \r
1549                     }                    \r
1550                 }\r
1551             };\r
1552             return false;   \r
1553     };  \r
1554     //处理主菜单面包削导航\r
1555     var globleCurrentBreadcrumb="";\r
1556         var globleCurrentMainMenuItemID="";\r
1557         var dhByBreadcrumb = false;\r
1558     var dealBreadcrumb=function(clickedObject,notGenUID,e){//notGenUID为true就不重新生成id\r
1559                 var mbreadcrumb=$('.breadcrumbUl');\r
1560                 openoFrameWork.setPageTitle(clickedObject.find('span').text().trim());              \r
1561                 var clieckedObj= clickedObject.parent('li');\r
1562                 if(clieckedObj.length == 0){ //分页式更多菜单,a链接的父亲是div\r
1563                         clieckedObj= clickedObject.parent('div');\r
1564                 }\r
1565                   //如果点击的是F菜单的竖菜单,还需要找到横菜单上的对应父亲加入到clieckedObj\r
1566                 var navPosOption = $('.nav-pos-direction', panel).val();                         \r
1567                 var parentid = clickedObject.attr('hparentid');                                                                  \r
1568                 var breadcrumGroupButtonSrc=clickedObject.attr("breadcrumGroupButtonSrc"); \r
1569                 globleCurrentMainMenuItemID=clickedObject.attr("id"); \r
1570                 var mhmtl="";\r
1571                 var url="";\r
1572                 var tempObj=null;\r
1573                 //var breadChangeType = e? (e.data ? e.data.breadChangeType:null):null;\r
1574                 if( dhByBreadcrumb ){\r
1575                         mhmtl = dealClickBreadcrumb(clieckedObj);\r
1576                         dhByBreadcrumb = "";\r
1577                 }else{\r
1578                         while  (clieckedObj&&clieckedObj.length>0){\r
1579                            if(clieckedObj.children('a')){\r
1580                                         if(!notGenUID){\r
1581                                                 url=openoFrameWork.getUniqueID("aid");//+Math.floor(Math.random() * (new Date()).getTime());\r
1582                                                 clieckedObj.children('a').attr("name",url);\r
1583                                         }else{\r
1584                                                 url=clieckedObj.children('a').attr("name");\r
1585                                         }\r
1586                                         tempObj=clieckedObj.clone();\r
1587                                         tempObj.children('a').removeClass('iframe');\r
1588                                         tempObj.children('a').removeClass('active');\r
1589                                         tempObj.children('a').attr("href","javascript:openoFrameWork.goToURL('"+url+"');");\r
1590                                         var arrowdown = $(".fa-angle-down", tempObj.children('a'));\r
1591                                         if (arrowdown) {\r
1592                                                 arrowdown.remove();\r
1593                                         }\r
1594                                         if(tempObj.children('a').length>0){\r
1595                                                   mhmtl=tempObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl;\r
1596                                         }                            \r
1597                                         //如果是F菜单和横菜单的子竖菜单点击,需要做特殊处理\r
1598                                         if( clieckedObj.parent('ul').attr('id') == fMenuSiderDivId || clieckedObj.parent('ul').attr('id') == megaSiderDivId){                                                                                                                                           \r
1599                                                 var id = clieckedObj.children( 'a' ).attr('hparentid');                                                                 \r
1600                                                 //判断是F菜单还是横菜单\r
1601                                                 var megaMenu = null;\r
1602                                                 if(navPosOption ==  openoFrameWork_menu_horizontal){\r
1603                                                         magaMenu = $('#'+megaDivId);\r
1604                                                 }else if(navPosOption ==  openoFrameWork_menu_fmenu){\r
1605                                                         magaMenu = $('#'+fMenuMegaDivId);\r
1606                                                 }\r
1607                                                 clieckedObj =  $("a[id=" + id + "]" , magaMenu).parent('li');                                                           \r
1608                                         }else{\r
1609                                                 clieckedObj=clieckedObj.parents('li');\r
1610                                         }       \r
1611                            }\r
1612                         }                         \r
1613                         if(clieckedObj[0]&&clieckedObj[0].length>0) {\r
1614                                 mhmtl=clieckedObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl;\r
1615                         }\r
1616                 }               \r
1617                 mbreadcrumb.empty();\r
1618                 $('.more-botton-zone').empty();\r
1619                 globleCurrentBreadcrumb=mhmtl;\r
1620                 store("globleCurrentBreadcrumb",globleCurrentBreadcrumb);\r
1621                 mbreadcrumb.append(mhmtl);                        \r
1622                 if(breadcrumGroupButtonSrc&&breadcrumGroupButtonSrc.length>0){                            \r
1623                         getBreadcrumbRightButtons(breadcrumGroupButtonSrc,e);\r
1624                 }else{\r
1625                         $('#pageableDiv').hide();\r
1626                 }                            \r
1627               \r
1628     };  \r
1629         //面包屑发起的点击,就不重新生成面包屑,只是把该面包屑的后续节点移出。\r
1630         var dealClickBreadcrumb = function(clieckedObj){\r
1631                 var index = globleCurrentBreadcrumb.indexOf(clieckedObj.children('a').attr("name"));\r
1632                 if( index > -1 ){//截取\r
1633                         var indexofSign = globleCurrentBreadcrumb.indexOf("<i class='fa fa-angle-right'>",index);\r
1634                         var newBreadcrumb = globleCurrentBreadcrumb.substring(0,indexofSign) + "<i class='fa fa-angle-right'></i>";\r
1635                         return newBreadcrumb;\r
1636                 }       \r
1637         }               \r
1638     //处理面包削中菜单点击后的导航(更多菜单的面包屑)\r
1639     var dealBreadcrumbBtnGroupMenus=function(clickedObject,notGenUID , e ){\r
1640         var mbreadcrumb=$('.breadcrumbUl');\r
1641                 var clieckedObj= clickedObject.parent();                          \r
1642         var breadcrumGroupButtonSrc=clickedObject.attr("breadcrumGroupButtonSrc");\r
1643         var mhmtl="";\r
1644         var url="";\r
1645         var tempObj=null;\r
1646                 var menuid=clickedObject.attr("id");\r
1647                 if (!breadcrumbBtnMenus.contains(menuid)) {//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来\r
1648                         breadcrumbBtnMenus.add(menuid,globleCurrentMainMenuItemID);\r
1649                 }                        \r
1650                 while  (clieckedObj&&clieckedObj.length>0){ \r
1651                         tempObj=clieckedObj.clone();\r
1652                         if(tempObj.children('a')){\r
1653                                 tempObj.children('a').removeClass('iframe');\r
1654                                 url=tempObj.children('a').attr("href");\r
1655                                 tempObj.children('a').attr("onclick","openoFrameWork.openbreadcrumbLink($(this),event);");\r
1656                                 var tempdiv = tempObj.children('a').children('div');\r
1657                                 if( tempdiv.length > 0 ){\r
1658                                         var innerofDiv = tempdiv[0].innerHTML;\r
1659                                         tempdiv.remove();\r
1660                                         tempObj.children('a')[0].innerHTML = innerofDiv;\r
1661                                 } \r
1662                                 if(tempObj.children('a').length>0){                   \r
1663                                           mhmtl=tempObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl;\r
1664                                 }\r
1665                                 clieckedObj=clieckedObj.parents('li');\r
1666                         }\r
1667                            \r
1668                 }\r
1669                 if(clieckedObj[0]&&clieckedObj[0].length>0) {\r
1670                         mhmtl=clieckedObj.children('a')[0].outerHTML+"<i class='fa fa-angle-right'></i>"+mhmtl;\r
1671                 }\r
1672                   \r
1673                 if(breadcrumGroupButtonSrc&&breadcrumGroupButtonSrc.length>0){\r
1674                         getBreadcrumbRightButtons(breadcrumGroupButtonSrc,true);\r
1675                 }else{\r
1676                         $('#pageableDiv').hide();\r
1677                 }\r
1678                 mbreadcrumb.empty();\r
1679                 var category= clickedObject.attr("category");//处理菜单中定义的Category属性\r
1680                 if(category&&category.length>0){//处理Category属性\r
1681                         var newIpPort=_menuCategorys.items(category);\r
1682                         if(newIpPort&&newIpPort.ipTitle&&newIpPort.ipTitle.trim()!=""){//如果找到了\r
1683                                 mhmtl=newIpPort.ipTitle+'<i class="fa fa-angle-right"></i>'+mhmtl;\r
1684                         }                               \r
1685                 }\r
1686                 mhmtl=globleCurrentBreadcrumb+mhmtl;\r
1687                 mbreadcrumb.append(mhmtl);              \r
1688         };\r
1689         var isMoreMenuItemClick = false;\r
1690         var dealBreadcrumbBtnMenuItemClick=function(clickObj,e){                \r
1691                 dealScrollTo();\r
1692                 var menuItemID=clickObj.attr("id");\r
1693                 if(!!menuItemID&&menuItemID.length>0){\r
1694                         _setLocationHash(menuItemID);\r
1695                         var breadmenuID=e&&e.data&&e.data.breadcrumbBtnMenuItem&&e.data.breadcrumbBtnMenuItem.length>0?e.data.breadcrumbBtnMenuItem:"";\r
1696                         _hashSource=breadmenuID&&breadmenuID.length>0?"":"dhByInterface";//hash进来的,不是导航进来的。\r
1697                 }\r
1698                 if(!(e&&e.breadcrumbBtnMenuItem&&e.breadcrumbBtnMenuItem.length>0)){//如果仅仅是tab跳转设置bread进来的,就框架不处理菜单点击,直接重新建立bread即可\r
1699                         dealstartPageLoading();                \r
1700                         dealIframe(clickObj,e);\r
1701                 }\r
1702                 dealBreadcrumbBtnGroupMenus(clickObj,false,e);  \r
1703         }\r
1704     // 固定边栏布局时计算边栏高度.\r
1705     var _calculateFixedSidebarViewportHeight = function () {\r
1706         var viewport = _getViewPort();\r
1707         var sidebarHeight =viewport.height - $('.header').height() + 1;\r
1708         if ($('body').hasClass("page-footer-fixed")) {\r
1709             sidebarHeight = sidebarHeight - (!$('.footer')||$('.footer').length<=0)?0:$('.footer').outerHeight();\r
1710         }\r
1711         return sidebarHeight;\r
1712     }\r
1713     // 处理固定边栏\r
1714     var dealFixedSidebar = function () {\r
1715         var menu = $('.page-sidebar-menu');\r
1716         if (menu.parent('.slimScrollDiv').size() === 1) { \r
1717             menu.removeAttr('style');\r
1718             $('.page-sidebar').removeAttr('style');\r
1719         }\r
1720 \r
1721        if ($('.page-sidebar-fixed').size() === 0) {\r
1722             dealSidebarAndContentHeight();\r
1723             return;\r
1724         }\r
1725 \r
1726         var viewport = _getViewPort();\r
1727         if (viewport.width >= openoFrameWork_smallView) {\r
1728             var sidebarHeight = _calculateFixedSidebarViewportHeight();\r
1729             dealSidebarAndContentHeight();\r
1730         }\r
1731     }\r
1732     // 固定边栏时处理菜单 hover 效果.\r
1733     var dealFixedSidebarHoverable = function () {\r
1734         if ($('body').hasClass('page-sidebar-fixed') === false) {\r
1735             return;\r
1736         }\r
1737         $('.page-sidebar').off('mouseenter').on('mouseenter', function () {\r
1738              dealSiderBarMouseenter();\r
1739         });\r
1740         $('.page-sidebar').off('mouseleave').on('mouseleave', function () {\r
1741              dealSiderBarMouseLeave();\r
1742         });\r
1743     }\r
1744     var dealSiderBarMouseenter=function(){\r
1745             var body = $('body');\r
1746             var siderbar=$('.page-sidebar');\r
1747             if ((body.hasClass('page-sidebar-closed') === false || body.hasClass('page-sidebar-fixed') === false) || $(this).hasClass('page-sidebar-hovering')) {\r
1748                 return;\r
1749             }\r
1750             body.removeClass('page-sidebar-closed').addClass('page-sidebar-hover-on');\r
1751             var siderbartoggle=$('.sidebar-toggler');\r
1752             \r
1753             if (body.hasClass("page-sidebar-reversed")) {\r
1754                 siderbar.width(_sidebarWidth);\r
1755                 dealSiderBarWidthChange();\r
1756             } else {\r
1757                 siderbar.addClass('page-sidebar-hovering');\r
1758                 siderbar.animate({\r
1759                     width: _sidebarWidth\r
1760                 }, 350, '', function () {\r
1761                     siderbar.removeClass('page-sidebar-hovering');\r
1762                     dealSiderBarWidthChange();\r
1763                 });\r
1764             }\r
1765     }\r
1766     var dealSiderBarMouseLeave=function(){\r
1767             var body = $('body');\r
1768             if ((body.hasClass('page-sidebar-hover-on') === false || body.hasClass('page-sidebar-fixed') === false) || $(this).hasClass('page-sidebar-hovering')) {\r
1769                 return;\r
1770             }\r
1771             var siderbar=$('.page-sidebar');\r
1772             var siderbartoggle=$('.sidebar-toggler');\r
1773             if (body.hasClass("page-sidebar-reversed")) {\r
1774                 body.addClass('page-sidebar-closed').removeClass('page-sidebar-hover-on');\r
1775                 siderbar.width(_sidebarCollapsedWidth);\r
1776                 if(siderbartoggle){\r
1777                      siderbartoggle.removeAttr('style');\r
1778                 }\r
1779                 dealSiderBarWidthChange();\r
1780             } else {\r
1781                 siderbar.addClass('page-sidebar-hovering');\r
1782                 siderbar.animate({\r
1783                     width: _sidebarCollapsedWidth\r
1784                 }, 350, '', function () {\r
1785                     body.addClass('page-sidebar-closed').removeClass('page-sidebar-hover-on');\r
1786                     dealSiderBarWidthChange();\r
1787                     siderbar.removeClass('page-sidebar-hovering');\r
1788                     if(siderbartoggle){         \r
1789                         siderbartoggle.removeAttr('style');\r
1790                     }\r
1791                 });\r
1792             }\r
1793     \r
1794     }\r
1795     //处理style css\r
1796     var dealAddStyle=function(element, property, value, important) {\r
1797                 var styleText=element.attr('style')?element.attr('style'):"";\r
1798                 styles=styleText.split(";");\r
1799                 var find="";\r
1800                 for(i=0;i<styles.length;i++){\r
1801                         if(styles[i].indexOf(property)>=0){\r
1802                                 find=styles[i];//看是否已经添加过,如果添加过就需要替换掉\r
1803                                 break;\r
1804                         }\r
1805                 }\r
1806                 styleText=find.length>0?styleText.replace(find,""):styleText;\r
1807                 styleText=(styleText + ';'+property + ':' + value + ((important) ? ' !important' : '') + ';').replace(/;;/g,";");\r
1808         element.attr('style',styleText );\r
1809     }\r
1810     var dealSiderBarWidthChange=function(){\r
1811         \r
1812     }\r
1813     // 处理边栏菜单切换时的关闭和隐藏.\r
1814     var dealSidebarToggler = function () {\r
1815         var viewport = _getViewPort();\r
1816         if (getCookie('sidebar_closed') === '1' && viewport.width >= openoFrameWork_smallView) {\r
1817             $('body').addClass('page-sidebar-closed');\r
1818         }\r
1819         $('.page-sidebar, .sidebar-toggler').on('click', '.sidebar-toggler', function (e) {\r
1820               e.preventDefault();\r
1821               var body = $('body');\r
1822               var sidebar = $('.page-sidebar');\r
1823               if(body.hasClass('page-sidebar-closed')){\r
1824                   $(this).removeAttr('style');  \r
1825               }           \r
1826         } );        \r
1827         $('.page-sidebar, .header').on('click', '.sidebar-toggler', function (e) {\r
1828             var body = $('body');\r
1829             var sidebar = $('.page-sidebar');\r
1830             if ((body.hasClass("page-sidebar-hover-on") && body.hasClass('page-sidebar-fixed')) || sidebar.hasClass('page-sidebar-hovering')) {\r
1831                 body.removeClass('page-sidebar-hover-on');\r
1832                 sidebar.css('width', '').hide().show();\r
1833                 dealSidebarAndContentHeight(); //fix content & sidebar height\r
1834                 setCookie('sidebar_closed', '0');\r
1835                 dealSiderBarWidthChange(); \r
1836                 e.stopPropagation();\r
1837                 runResponsiveHandlers();\r
1838                 return;\r
1839             }\r
1840             $(".sidebar-search", sidebar).removeClass("open");\r
1841                         var panel = $('.zte-theme-panel');\r
1842                         var sidebarPosOption = $('.sidebar-pos-option', panel).val();\r
1843                         var pcontent = $("[class='page-content']");\r
1844             if (body.hasClass("page-sidebar-closed")) {\r
1845                 body.removeClass("page-sidebar-closed");\r
1846                 if (body.hasClass('page-sidebar-fixed')) {\r
1847                     sidebar.css('width', '');                     \r
1848                 }\r
1849                                 setCookie('sidebar_closed', '0');\r
1850                                 pcontent.css("marginLeft",_sidebarWidth);\r
1851                                 dealSiderBarWidthChange(); \r
1852             } else {\r
1853                 body.addClass("page-sidebar-closed");\r
1854                 $(this).removeAttr('style');\r
1855                                 setCookie('sidebar_closed', '1');\r
1856                                 pcontent.css("marginLeft", _sidebarCollapsedWidth);\r
1857                                 dealSiderBarWidthChange(); \r
1858             }\r
1859                         //针对侧边栏伸缩的情况需加入对.page-content的判断。\r
1860             dealSidebarAndContentHeight(true); \r
1861             runResponsiveHandlers();\r
1862         });\r
1863     }\r
1864     // 处理水平菜单\r
1865     var dealHorizontalMenu = function () {\r
1866         $('.header').on('click', '.hor-menu .hor-menu-search-form-toggler', function (e) {\r
1867             if ($(this).hasClass('off')) {\r
1868                 $(this).removeClass('off');\r
1869                 $('.header .hor-menu .search-form').hide();\r
1870             } else {\r
1871                 $(this).addClass('off');\r
1872                 $('.header .hor-menu .search-form').show();\r
1873             }\r
1874             e.preventDefault();\r
1875         });\r
1876                 // 处理水平菜单 处理header下拉菜单中的菜单连接,显示在iframe中\r
1877         $('.header').on('click', ' li > a.iframe', function (e) {\r
1878                         //dealMenuItemClick($(this),e,"header"); \r
1879                         e.preventDefault();\r
1880                         var menuItemID=$(this).attr("id");\r
1881                         if(!!menuItemID&&menuItemID.length>0){\r
1882                                 _setLocationHash(menuItemID);   \r
1883                                 _hashSource="dhByInterface";\r
1884                         }//else{\r
1885                         _isClicked=true;\r
1886                            dealMenuItemClick($(this),e,"header"); \r
1887                         //}             \r
1888         });   \r
1889         //处理TAB点击\r
1890         $('.header').on('click', '.hor-menu a[data-toggle="tab"]', function (e) {     \r
1891             e.preventDefault();\r
1892             var nav = $(".hor-menu .nav");\r
1893             var active_link = nav.find('li.current');\r
1894             $('li.active', active_link).removeClass("active");\r
1895             $('.selected', active_link).remove();\r
1896             var new_link = $(this).parents('li').last();\r
1897             new_link.addClass("current");\r
1898             new_link.find("a:first").append('<span class="selected"></span>');\r
1899         });\r
1900     }   \r
1901         // 增加一个对服务端的心跳\r
1902         var doHeartbeat = function() {          \r
1903                 //心跳超时次数            \r
1904                 var heartBeatTimes = 0;\r
1905                 return setInterval(function() {\r
1906                         var userName;\r
1907                         if( userName == null ){\r
1908                                 var userName = openoFrameWork_conf.userName;\r
1909                         }\r
1910                         var heartUrl = FrameConst.REST_HEARTBEAT + "?username=" + encodeURIComponent(userName);\r
1911                         $.ajax(heartUrl, {\r
1912                                 dataType : "text",\r
1913                                 cache : false\r
1914                         }).done(function(data) {\r
1915                                 // if (data != "true") { //收到不属于取值范围内的回复,说明出现不可预知情况,取消心跳。是原framework.js中的逻辑,比较奇怪,先保留注释。\r
1916                                         // disableHeartbeat();\r
1917                                 // }\r
1918                                 //收到心跳回应消息,心跳超时次数置0\r
1919                                 if( data == "true" ){\r
1920                                         heartBeatTimes = 0;     \r
1921                                 }                               \r
1922                         });\r
1923                         heartBeatTimes++;\r
1924                         //心跳超时6次即1分钟,转到登录界面,认为链路断。\r
1925                         if(heartBeatTimes >= 6){\r
1926                                 disableHeartbeat();\r
1927                                 //console.log(com_zte_ums_aos_framework_ui_heartbeat_timeout);                                                                             \r
1928                                 bootbox.alert($.i18n.prop('com_zte_ums_aos_framework_ui_heartbeat_fail'), function () {                    \r
1929                                         window.location.replace("login.html");\r
1930                                 });\r
1931                         }\r
1932                 }, 10000);\r
1933         };      \r
1934         if( FrameConst.do_heartbeat ){\r
1935                 var heartbeatTimer = doHeartbeat();\r
1936         }\r
1937         window.enableHeartbeat = function() {\r
1938                 if (!heartbeatTimer) {\r
1939                         //重新启动心跳功能,心跳超时次数置0\r
1940                         heartBeatTimes = 0;\r
1941                         heartbeatTimer = doHeartbeat();\r
1942                         return "Enabled";\r
1943                 }\r
1944                 return "Already enabled!";\r
1945         };\r
1946         window.disableHeartbeat = function() {\r
1947                 if (heartbeatTimer) {\r
1948                         clearInterval(heartbeatTimer);\r
1949                         heartbeatTimer = null;\r
1950                         return "Disabled";\r
1951                 }\r
1952                 return "Already disabled!";\r
1953         };      \r
1954         window.doLogout = function(){\r
1955                 logoutSubmit();\r
1956         };\r
1957     //处理ict注销确认\r
1958     $('#trigger_logout').click(function(){\r
1959                 bootbox.confirm($.i18n.prop('com_zte_ums_ict_framework_ui_confirmlogout'), function(result) { //你确认要注销吗?\r
1960                    if(result){\r
1961                      doLogout();\r
1962                     }\r
1963                 }); \r
1964             });\r
1965     // Handle full screen mode toggle\r
1966     var isscreenFull=false;\r
1967     var dealFullScreenMode = function() {\r
1968         // 处理全屏事件\r
1969         function toggleFullScreen() {\r
1970             if(!screenfull.supportsFullScreen){//不支持全屏\r
1971                 if (isIE&&typeof window.ActiveXObject !== "undefined") { // Older IE.\r
1972                     var wscript = new ActiveXObject("WScript.Shell");\r
1973                                       if (wscript !== null) {\r
1974                                                 wscript.SendKeys("{F11}");\r
1975                         isscreenFull=!isscreenFull;                                                \r
1976                                        }\r
1977                             }else{\r
1978                     isscreenFull=screenfull.supportsFullScreen;\r
1979                 }; \r
1980             }else{\r
1981               screenfull.isFullScreen?screenfull.exitFullScreen():screenfull.requestFullScreen();\r
1982               isscreenFull= screenfull.isFullscreen;\r
1983             }\r
1984             setTimeout(function(){\r
1985               if(isscreenFull){\r
1986                   $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_exitfullscreen'));\r
1987               }else{\r
1988                   $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen'));\r
1989               }\r
1990            },500);    \r
1991         } \r
1992                  \r
1993         $('#trigger_fullscreen').click(function() {\r
1994             toggleFullScreen();\r
1995         });\r
1996     }    \r
1997     //清理当前正在显示的iframe之外缓存的iframe,\r
1998     var dealClearCachedIframes=function(isall){\r
1999             if (cachedIframes.count()>0) {\r
2000                 for (var i in cachedIframes.hash()) {\r
2001                     var pagemyIframe=$('.page-content .page-content-body .'+i);                       \r
2002                     if(pagemyIframe&&pagemyIframe.length>0){\r
2003                          if(isall==true){\r
2004                                                         pagemyIframe.attr("src","");\r
2005                                                     pagemyIframe.remove();\r
2006                                                  }else if(i!=_iframe)\r
2007                                                         pagemyIframe.attr("src","");\r
2008                                                 pagemyIframe.remove();                                          \r
2009                                         }\r
2010                                 }\r
2011            }\r
2012            cachedIframes.clear();\r
2013                    if (cachedIframesObject.count()>0) {//清理缓存的iframe实体对象。\r
2014                 for (var i in cachedIframesObject.hash()) {\r
2015                     if(i!=_iframe)\r
2016                                         cachedIframesObject.remove(i);\r
2017                                 }\r
2018            }\r
2019         }\r
2020     var lastSelectedLayout = '';    \r
2021     var dealTheme = function () {\r
2022         var panel = $('.zte-theme-panel');\r
2023         if ($('body').hasClass('page-boxed') == false) {\r
2024             $('.layout-option', panel).val("fluid");\r
2025         }\r
2026         $('.sidebar-option', panel).val("default");\r
2027                 $('.language-option', panel).val(defaultLanage);\r
2028         $('.header-option', panel).val("fixed");\r
2029         $('.footer-option', panel).val("default");\r
2030         if ( $('.sidebar-pos-option').attr("disabled") === false) {\r
2031             $('.sidebar-pos-option', panel).val(openoFrameWork.isRTL() ? 'right' : 'left');\r
2032         }               \r
2033         var _resetLayout = function () {\r
2034             dealResetLayout();\r
2035         }   \r
2036         var _setLayout = function () {\r
2037                         dealSetLayout();\r
2038         }\r
2039         var setColor = function (color) {\r
2040             var color_ = (openoFrameWork.isRTL() ? color + '-rtl' : color);\r
2041             $('#style_color').attr("href", ICTFRAME_CONST_THEME_COLOR_CSS_PREFFIX + color_ + ".css");\r
2042             setCookie('style_color', color);\r
2043                         syncColorCSS();\r
2044         }               \r
2045         $('.toggler', panel).click(function () {\r
2046             $('.toggler').hide();\r
2047             $('.toggler-close').show();\r
2048             $('.zte-theme-panel > .theme-options').show();\r
2049         });\r
2050 \r
2051         $('.toggler-close', panel).click(function () {\r
2052             $('.toggler').show();\r
2053             $('.toggler-close').hide();\r
2054             $('.zte-theme-panel > .theme-options').hide();\r
2055         });\r
2056         $('.theme-colors > ul > li', panel).click(function () {\r
2057             var color = $(this).attr("data-style");\r
2058             setColor(color);\r
2059             $('ul > li', panel).removeClass("current");\r
2060             $(this).addClass("current");\r
2061         });\r
2062         $('.layout-option,.header-option, .sidebar-option, .footer-option, .sidebar-pos-option, .nav-pos-direction', panel).change(_setLayout);\r
2063                 if (getCookie('style_color') != undefined) {\r
2064                         setColor(getCookie('style_color'));\r
2065                 }\r
2066                 $('.language-option', panel).change(function(){\r
2067                         var languageOption = $('.language-option', panel).val();\r
2068                         setCookie('language-option', languageOption);           \r
2069                         window.location.reload();\r
2070                 });             \r
2071     }   \r
2072         var dealResetLayout = function () {\r
2073             $("body").\r
2074             removeClass("page-boxed").\r
2075             removeClass("page-footer-fixed").\r
2076             removeClass("page-sidebar-fixed").\r
2077             removeClass("page-header-fixed").\r
2078             removeClass("page-sidebar-reversed");\r
2079             $('.header > .header-inner').removeClass("container");\r
2080             if ($('.page-container').parent(".container").size() === 1) {\r
2081                 $('.page-container').insertAfter('body > .clearfix');\r
2082             }\r
2083             if ($('.footer > .container').size() === 1) {\r
2084                 $('.footer').html($('.footer > .container').html());\r
2085             } else if ($('.footer').parent(".container").size() === 1) {\r
2086                 $('.footer').insertAfter('.page-container');\r
2087             }\r
2088             $('body > .container').remove();                    \r
2089     }   \r
2090     /*\r
2091      * 此方法在客户端初始化和设置面板上选择菜单方向的时候用。\r
2092      * param navPosOption\r
2093      */\r
2094         var dealNavPos = function(navPosOption) {\r
2095                 // 横竖边栏切换功能禁用,则返回\r
2096                 var panel = $('.zte-theme-panel');\r
2097                 if ($('.nav-pos-direction', panel).attr("disabled") == "disabled") {\r
2098                         return;\r
2099                 }\r
2100                 var sidermenu = $("#page-sidebar-menu");\r
2101                 var hormenu = $("#main_hormenu");\r
2102         var sidermenu = $("#page-sidebar-menu");\r
2103         var hormenu = $("#main_hormenu");\r
2104                 var horSiderMenu = $('#' + megaSiderDivId );\r
2105         var fhorMenu = $("#" + fMenuMegaDivId);\r
2106         var fsiderMenu = $("#" + fMenuSiderDivId);\r
2107                 var pcontent = $("[class='page-content']");\r
2108                 if (sidermenu && sidermenu.length > 0 && hormenu && hormenu.length  > 0 && fhorMenu && fhorMenu.length  > 0) {\r
2109                         if (navPosOption === openoFrameWork_menu_horizontal) {\r
2110                                 sidermenu.css('display','none');// 侧边栏隐藏\r
2111                 fhorMenu.css('display','none');\r
2112                 fsiderMenu.css('display','none');\r
2113                                 pcontent.css("marginLeft",0);\r
2114                                 $("body").addClass("page-full-width");//调整内容显示\r
2115                                 hormenu.css("display", "block");//显示水平菜单栏\r
2116                                 // 导航位置为水平菜单时,边栏和边栏位置为默认和靠左,且将其切换功能禁用掉\r
2117                                 $('.sidebar-option', panel).val("default");\r
2118                                 $('.sidebar-option', panel).attr("disabled", true);\r
2119                                 $('.sidebar-pos-option', panel).val("left");\r
2120                                 $('.sidebar-pos-option', panel).attr("disabled", true);\r
2121                         } else if (navPosOption === openoFrameWork_menu_vertical ) {\r
2122                                 $("body").removeClass("page-full-width");\r
2123                                 sidermenu.css('display','block');//侧边栏显示\r
2124                                 var body = $('body');\r
2125                                 if (body.hasClass("page-sidebar-closed")) {\r
2126                                         pcontent.css("marginLeft", _sidebarCollapsedWidth);\r
2127                                 } else {\r
2128                                         pcontent.css("marginLeft", _sidebarWidth);\r
2129                                 }\r
2130                                 hormenu.css("display", "none");//隐藏水平菜单栏\r
2131                 fhorMenu.css('display','none');\r
2132                 fsiderMenu.css('display','none');\r
2133                                 horSiderMenu.css('display','none');\r
2134                                 $('.sidebar-option', panel).attr("disabled", false);\r
2135                                 $('.sidebar-pos-option', panel).attr("disabled", false);\r
2136                         } else if(navPosOption === openoFrameWork_menu_fmenu ){\r
2137                 sidermenu.css('display','none');// 侧边栏隐藏\r
2138                 hormenu.css("display", "none");//隐藏水平菜单栏\r
2139                 fsiderMenu.css('display','none');\r
2140                 fhorMenu.css('display','block');\r
2141                 pcontent.css("marginLeft",0);\r
2142                 $("body").addClass("page-full-width");//调整内容显示\r
2143                 // 导航位置为水平菜单时,边栏和边栏位置为默认和靠左,且将其切换功能禁用掉\r
2144                 $('.sidebar-option', panel).val("default");\r
2145                 $('.sidebar-option', panel).attr("disabled", true);\r
2146                 $('.sidebar-pos-option', panel).val("left");\r
2147                 $('.sidebar-pos-option', panel).attr("disabled", true);\r
2148             }\r
2149                 }\r
2150         }       \r
2151     var dealSetLayout = function(){\r
2152             var panel = $('.zte-theme-panel');\r
2153         var layoutOption = $('.layout-option', panel).val();  \r
2154                 var languageOption = $('.language-option', panel).val();                \r
2155                 var headerOption = $('.header-option', panel).val();\r
2156         var footerOption = $('.footer-option', panel).val();        \r
2157                 var navPosOption = $('.nav-pos-direction', panel).val();                \r
2158                 dealNavPos(navPosOption);\r
2159                 var sidebarOption = $('.sidebar-option', panel).val();\r
2160                 var sidebarPosOption = $('.sidebar-pos-option', panel).val();\r
2161         if (sidebarOption == "fixed" && headerOption == "default") {\r
2162             alert($.i18n.prop('com_zte_ums_ict_framework_ui_fixedsidedefaultheaderError'));  //页头不支持固定边栏,先固定页头才能固定边栏.\r
2163             $('.header-option', panel).val("fixed");\r
2164             $('.sidebar-option', panel).val("fixed");\r
2165             sidebarOption = 'fixed';\r
2166             headerOption = 'fixed';\r
2167         }\r
2168         if (sidebarOption == "fixed" && sidebarPosOption == "right") {\r
2169             alert($.i18n.prop('com_zte_ums_ict_framework_ui_fixedsiderightpositionError'));  //固定边栏情况下,边栏不能靠右。.\r
2170             $('.sidebar-pos-option', panel).val("left");\r
2171             sidebarPosOption = 'left';\r
2172         }\r
2173         dealResetLayout(); // reset layout to default state\r
2174         if (layoutOption === "boxed") {\r
2175                 $("body").addClass("page-boxed");\r
2176                 // set header\r
2177                 $('.header > .header-inner').addClass("container");\r
2178                 var cont = $('body > .clearfix').after('<div class="container"></div>');\r
2179                 // set content\r
2180                 $('.page-container').appendTo('body > .container');\r
2181                 // set footer\r
2182                 if (footerOption === 'fixed') {\r
2183                     $('.footer').html('<div class="container">' + $('.footer').html() + '</div>');\r
2184                 } else {\r
2185                     $('.footer').appendTo('body > .container');\r
2186                 }\r
2187         }               \r
2188         if (lastSelectedLayout != layoutOption) {\r
2189                 runResponsiveHandlers();\r
2190         }\r
2191         lastSelectedLayout = layoutOption;\r
2192             //header\r
2193         if (headerOption === 'fixed') {\r
2194                 $("body").addClass("page-header-fixed");\r
2195                 $(".header").removeClass("navbar-static-top").addClass("navbar-fixed-top");\r
2196         } else {\r
2197                 $("body").removeClass("page-header-fixed");\r
2198                 $(".header").removeClass("navbar-fixed-top").addClass("navbar-static-top");\r
2199         }\r
2200             //sidebar\r
2201         if ($('body').hasClass('page-full-width') === false) {\r
2202                 if (sidebarOption === 'fixed') {\r
2203                     $("body").addClass("page-sidebar-fixed");\r
2204                 } else {\r
2205                     $("body").removeClass("page-sidebar-fixed");\r
2206                 }\r
2207         }\r
2208             //footer \r
2209         if (footerOption === 'fixed') {\r
2210                 $("body").addClass("page-footer-fixed");\r
2211         } else {\r
2212                 $("body").removeClass("page-footer-fixed");\r
2213         }\r
2214             //sidebar position\r
2215         if (openoFrameWork.isRTL()) {\r
2216                 if (sidebarPosOption === 'left') {\r
2217                     $("body").addClass("page-sidebar-reversed");\r
2218                     $('#frontend-link').tooltip('destroy').tooltip({placement: 'right'});\r
2219                 } else {\r
2220                                         var pcontent = $("[class='page-content']");\r
2221                                         pcontent.css("marginLeft",0);//侧边栏靠右,则左边内容填充为0\r
2222                     $("body").removeClass("page-sidebar-reversed");\r
2223                     $('#frontend-link').tooltip('destroy').tooltip({placement: 'left'});\r
2224                 }\r
2225         } else {\r
2226                 if (sidebarPosOption === 'right') {\r
2227                                         var pcontent = $("[class='page-content']");\r
2228                                         pcontent.css("marginLeft",0);//侧边栏靠右,则左边内容填充为0\r
2229                     $("body").addClass("page-sidebar-reversed");\r
2230                     $('#frontend-link').tooltip('destroy').tooltip({placement: 'left'});\r
2231                 } else {\r
2232                     $("body").removeClass("page-sidebar-reversed");\r
2233                     $('#frontend-link').tooltip('destroy').tooltip({placement: 'right'});\r
2234                 }\r
2235         }\r
2236         dealSidebarAndContentHeight();   \r
2237         dealFixedSidebar(); \r
2238         dealFixedSidebarHoverable();            \r
2239                 dealSiderBarWidthChange();\r
2240                 setCookie('layout-option', layoutOption);\r
2241                 setCookie('language-option', languageOption);\r
2242                 setCookie('header-option', headerOption);\r
2243                 setCookie('sidebar-option', sidebarOption);\r
2244                 setCookie('sidebar-pos-option', sidebarPosOption);\r
2245                 setCookie('nav-pos-direction', navPosOption);\r
2246     }\r
2247         var setCookie = function (key, value) {\r
2248             if (store) {\r
2249                 store(key, value);\r
2250             }\r
2251         }       \r
2252         var getCookie = function (key) {\r
2253             if (store) {\r
2254                 return store(key);\r
2255             } else {\r
2256                 return undefined;\r
2257             }\r
2258         }       \r
2259         /*下面处理前进后退和锚点访问*/\r
2260         var _getLocationHash = function() {\r
2261                     return location.hash.replace("#_", "");\r
2262         }\r
2263         /*统一入口设置锚点*/\r
2264         var _setLocationHash = function(menuItemID) {\r
2265                     location.hash = getLocationHashByMenuId(menuItemID);\r
2266         }\r
2267     var getLocationHashByMenuId = function(menuItemID){\r
2268         return "#_" + menuItemID;\r
2269     }\r
2270         // hash control\r
2271         var loadCurrentHash = function(e,data){\r
2272                 var locationhash = _getLocationHash();  //important\r
2273                 if(!!locationhash&&locationhash.length>0){\r
2274                         if(_hashSource.trim()=="dhByInterface"){\r
2275                                 _hashSource="";\r
2276                         }else{\r
2277                                 processChangedHash(locationhash,data);\r
2278                         }\r
2279                 }\r
2280         }       \r
2281         // hash control  这种写法安全点  \r
2282         var processChangedHash = function(path) {\r
2283                 var id = path;\r
2284                 var action = undefined;\r
2285                 var spIndex = path.indexOf("/");\r
2286                 if(spIndex != -1) {\r
2287                         id = path.substring(0,spIndex);\r
2288                         action = path.substring(spIndex+1);\r
2289                 }\r
2290                 openoFrameWork.goToURLByIDAndNewAction(id,action);\r
2291         }\r
2292         var syncColorCSS=function(){//注册皮肤切换事件处理函数,处理iframe中的皮肤切换\r
2293                 var pagemyIframe=null;\r
2294                 if (cachedIframes.count()>0) {\r
2295             for (var i in cachedIframes.hash()) {                                             \r
2296                             pagemyIframe=$('.page-content .page-content-body .'+i);\r
2297                             if(pagemyIframe&&pagemyIframe.length>0){\r
2298                                         openoFrameWork.SyncCSS(pagemyIframe[0],1,"");\r
2299                                 }\r
2300             }\r
2301         }\r
2302         }       \r
2303         var getCurrentVisibleIframe=function(){\r
2304                 var pagemyIframe=null;\r
2305         if (cachedIframes.count()>0) {\r
2306             for (var i in cachedIframes.hash()) {                                             \r
2307                             if(cachedIframes.items(i)===1){\r
2308                                         pagemyIframe=$('.page-content .page-content-body .'+i);\r
2309                             }\r
2310             }\r
2311         }\r
2312                 return pagemyIframe;                                            \r
2313     }\r
2314         //处理跨域请求代理,通过该代理进行iframe间传递参数,注意这里的代理页面proxy.html必须部署到要跨域的对端域的服务器web根目录下\r
2315         var dealCrossProxy=function(ifrm,crossproxysrc,ifmHeadlins,flag){//crossproxysrc这个是proxy.html对应的url根路径\r
2316                 var url=$.url(openoFrameWork.getCurrentScript(document));\r
2317                 var proxyHtmlPath=url.attr("directory")+"proxy/proxy.html"//这中情况适用于使用了该界面集成框架的应用系统\r
2318             var _ifmProxy=$('<iframe id="ifm_Proxy" name="ifm_Proxy" oldproxyorigin="'+crossproxysrc+'" src="'+crossproxysrc+proxyHtmlPath+'" style="border: 0px; margin: 0px; padding: 0px; width: 100%; display:none;" ></iframe>');\r
2319                 var _ifm=$('#ifm_Proxy');\r
2320                 _ifm.hide();\r
2321                 var pageContentBody=$('.page-content .page-content-body');\r
2322                 var linksrcs=new Array();\r
2323                 var linksids=new Array();\r
2324                 var linktyps=new Array();\r
2325                 var _src="";\r
2326                 for (i=0;i<ifmHeadlins.length;i++){\r
2327                         if(typeof ifmHeadlins[i].link.href!== "undefined"){\r
2328                                 _src=ifmHeadlins[i].link.href;\r
2329                                 linktyps.push("css");                   \r
2330                         }\r
2331                         else if(typeof ifmHeadlins[i].link.src!== "undefined"){\r
2332                                 if(!!ifmHeadlins[i].link.src&&ifmHeadlins[i].link.src.length>0){\r
2333                                         _src=ifmHeadlins[i].link.src;\r
2334                                         linktyps.push("javascriptfile");\r
2335                                 }else{\r
2336                                         _src=ifmHeadlins[i].link.text;\r
2337                                         linktyps.push("javascripttext");\r
2338                                 }\r
2339                         }else{\r
2340                                 linktyps.push("undefined");\r
2341                         }\r
2342                         linksrcs.push(_src);\r
2343                         linksids.push({"pos":ifmHeadlins[i].pos,"scope":ifmHeadlins[i].scope,"id":ifmHeadlins[i].link.id});\r
2344                 }\r
2345                 var parm={iFrame:ifrm,cssLinktyps:linktyps,cssLinksrcs:linksrcs,cssLinkids:linksids,origin:crossproxysrc,flag:flag};\r
2346                 if(_ifm&&_ifm.length<=0){//没有添加过\r
2347                     _ifmProxy.appendTo(pageContentBody);\r
2348                         _ifmProxy.one('load',parm,function(e){ \r
2349                             var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag};\r
2350                                 $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin\r
2351                         });\r
2352                 }else if(_ifm.attr("oldproxyorigin")!=crossproxysrc){//代理已经添加过了,看是否是同一个网站的代理,如果不是需要重新加载\r
2353                         _ifm.attr("src","");\r
2354                         _ifm.attr("oldproxyorigin",crossproxysrc);\r
2355                         _ifm.one('load',parm,function(e){ \r
2356                             var data={iFrame:e.data.iFrame,cssLinktyps:e.data.cssLinktyps,cssLinksrcs:e.data.cssLinksrcs,cssLinkids:e.data.cssLinkids,flag:flag};\r
2357                                 $('#ifm_Proxy')[0].contentWindow.postMessage(data,e.data.origin);//window.location.origin\r
2358                         });\r
2359                         _ifm.attr("src",_ifmProxy.attr("src"));\r
2360                 }else{//已经添加过,直接触发消息发送即可                \r
2361                         var data={iFrame:parm.iFrame,cssLinktyps:parm.cssLinktyps,cssLinksrcs:parm.cssLinksrcs,cssLinkids:parm.cssLinkids,flag:flag};\r
2362                         _ifm[0].contentWindow.postMessage(data,parm.origin);//window.location.origin\r
2363                 }\r
2364         }\r
2365     return {  \r
2366         init: function () {\r
2367                         if(zte_http_headers){\r
2368                                 store("zte_http_headers",zte_http_headers);\r
2369                         }\r
2370             dealInit(); \r
2371             dealResponsiveOnResize(); \r
2372             dealResponsiveOnInit(); \r
2373             dealClearCachedIframes(true); ////清理当前正在显示的iframe之外缓存的iframe,\r
2374                         breadcrumbBtnMenus.clear();\r
2375             dealFixedSidebar(); // deals fixed sidebar menu\r
2376             dealFixedSidebarHoverable(); // deals fixed sidebar on hover effect \r
2377             dealSidebarMenu(); // deals main menu\r
2378             dealHorizontalMenu(); // deals horizontal menu\r
2379             dealSidebarToggler(); // deals sidebar hide/show            \r
2380             dealTheme(); // deals style customer tool           \r
2381                         dealSetLayout();                        \r
2382                         $(function() {\r
2383                                 $(window).on('hashchange',function(){\r
2384                     loadCurrentHash();\r
2385                 });\r
2386                         });            \r
2387             dealFullScreenMode(); // deals full screen\r
2388                         $("#header_dropdown_user").css('display','block');\r
2389                         $("#com_zte_ums_ict_framework_img_netnumenLogo").css('display','inline');\r
2390                         $("#com_zte_ums_ict_framework_ui_main_title").css('display','inline');\r
2391                         handeCtxMenuitem();\r
2392         },\r
2393         //公开清理缓存的所有Iframe的方法:isALL==true则清理所有,否则清理当前正在显示的iframe之外缓存的iframe,。\r
2394         clearCachedIframes:function(isAll){\r
2395           dealClearCachedIframes(isAll);\r
2396         },\r
2397                 \r
2398                 setBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180\r
2399                         if (store) {\r
2400                                 store('baseURLRoot', ipportStr);\r
2401                         }\r
2402                         var url = $.url(ipportStr);\r
2403                         location.hash=url.attr('fragment');\r
2404                         var auth=url.attr('query');\r
2405                         if (store) {\r
2406                                 store('baseURLRootAuth', auth);\r
2407                         }\r
2408                 },\r
2409                 getBaseURLRoot:function(ipportStr){//菜单url的跟ip和端口例如:http://10.74.151.122:21180\r
2410                         var rooturl="";\r
2411                         if (store) {\r
2412                                 rooturl=store('baseURLRoot');\r
2413                         }\r
2414                         return !rooturl?"":rooturl;\r
2415                 },\r
2416                 clearBaseURLRoot:function(){//菜单url的跟ip和端口例如:http://10.74.151.122:21180\r
2417                         if (store) {\r
2418                                 store('baseURLRoot', "",-1);\r
2419                         }\r
2420                 },\r
2421                 setPageTitle:function(title){//设置页面标题\r
2422                         $('title').html(title+" - "+gdocTitle); \r
2423                 },\r
2424                 getLanguage:function(){//获取语言\r
2425                         return openoFrameWork_conf.acceptLanguage;\r
2426                 },\r
2427         \r
2428                 getLocationHash:function(){\r
2429                         return _getLocationHash();\r
2430                 },\r
2431                 setSceneURLRootPath:function(sceneURLRootPath){\r
2432                         if(sceneURLRootPath&&sceneURLRootPath.trim().length>0){//如果定义了场景的全局参数\r
2433                                 _sceneURLRootPath=sceneURLRootPath.trim();\r
2434                                 if(_sceneURLRootPath.charAt(_sceneURLRootPath.length-1)!='/')\r
2435                                 {\r
2436                                    _sceneURLRootPath=_sceneURLRootPath+'/';\r
2437                                 }\r
2438                         }\r
2439                 },\r
2440         //public function to add callback a function which will be called on window resize\r
2441         addResponsiveHandler: function (func) {\r
2442             responsiveHandlers.push(func);\r
2443         },\r
2444 \r
2445                 hiddenAlarmLight:function(){\r
2446                    hideAlarmLight();\r
2447                 },\r
2448                 \r
2449                 hiddenMenu:function(){\r
2450                         hidemenu();\r
2451                 },              \r
2452                 setBreadcrumbByMenuID:function(id){\r
2453                         //var breaditem=$('#'+id);\r
2454                         var menuitem=undefined;\r
2455                         // var items=$("a[id='"+id+"']");\r
2456                         var items = undefined;\r
2457                         var panel = $('.zte-theme-panel');\r
2458                         var navPosOption = $('.nav-pos-direction', panel).val();\r
2459                         if (navPosOption === "vertical"){ //从垂直菜单里面找\r
2460                                 items=$("#page-sidebar-menu a[id='"+id+"']");\r
2461                                 if (!items || items.length < 1) {\r
2462                                         items=$(".page-content a[id='"+id+"']");\r
2463                                 }\r
2464                         }else if(navPosOption === openoFrameWork_menu_horizontal){//从水平菜单里面找\r
2465                 items=$("#main_hormenu a[id='"+id+"']");\r
2466                 if(items.length == 0){\r
2467                     //横菜单没有找到,再在横菜单的子菜单找一次\r
2468                     items=$("#page-megachild-sidebar-menu a[id='"+id+"']");\r
2469                 }\r
2470             }else if(navPosOption === openoFrameWork_menu_fmenu){\r
2471                 items=$("#f_hormenu a[id='"+id+"']");\r
2472                 if(items.length == 0){\r
2473                     //横菜单没有找到,再在竖菜单找一次。\r
2474                     items=$("#page-f-sidebar-menu a[id='"+id+"']");\r
2475                 }\r
2476             }\r
2477                         var isbreadcrumbMenuItem=false;\r
2478                         if(items.length>0){\r
2479                                 for(var i=0;i<items.length;i++){\r
2480                                         if($(items[i]).parentsUntil('.header-inner').hasClass('hor-menu')){\r
2481                                                 menuitem=$(items[i]);\r
2482                                                 break;\r
2483                                         }else if($(items[i]).parentsUntil('.page-container').hasClass('page-sidebar')){\r
2484                                                 menuitem=$(items[i]);\r
2485                                                 break;\r
2486                     }else if($(items[i]).parentsUntil('.more-botton-zone .btn-group').hasClass('dropdown-menu')){\r
2487                                                 menuitem=$(items[i]);\r
2488                                                 isbreadcrumbMenuItem=true;\r
2489                                                 break;\r
2490                                         }else if($(items[i]).parentsUntil('#pageableDiv').hasClass('row1')){\r
2491                                                 menuitem=$(items[i]);\r
2492                                                 isbreadcrumbMenuItem=true;\r
2493                                                 break;\r
2494                                         }\r
2495                                 }\r
2496                         }\r
2497                         \r
2498                         if(menuitem&&menuitem.length>0){                                \r
2499                                 if(isbreadcrumbMenuItem){\r
2500                                         dealBreadcrumbBtnGroupMenus(menuitem,false);\r
2501                                 }else{\r
2502                                         dealBreadcrumb(menuitem,true,null);                             \r
2503                                 }       \r
2504                         }else{\r
2505                                 var breadcrumbBtnMenuItemParent="";\r
2506                                 if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理\r
2507                                         var menuItemID=id;\r
2508                                         if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存\r
2509                                                 breadcrumbBtnMenuItemParent="#"+breadcrumbBtnMenus.items(menuItemID);\r
2510                                                 menuitem=$(breadcrumbBtnMenuItemParent);        \r
2511                                                 //_breadcrumbSource=true;\r
2512                                         }\r
2513                                 }\r
2514                                 var parm=undefined;\r
2515                                 if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){\r
2516                                         parm={breadcrumbBtnMenuItem:menuItemID};\r
2517                                 }\r
2518                                 if(parm&&menuitem&&menuitem.length>0) {\r
2519                                         dealBreadcrumb(menuitem,true,parm);\r
2520                                 }\r
2521                         }                                               \r
2522                 },                              \r
2523         setSiderbarCollapseWidth:function(width){\r
2524             _sidebarCollapsedWidth = width;\r
2525         },\r
2526         getSiderbarCollapseWidth:function(){\r
2527             return _sidebarCollapsedWidth;\r
2528         },\r
2529         setSidebarWidth:function(width){\r
2530             _sidebarWidth = width;\r
2531         },\r
2532         getSidebarWidth:function(){\r
2533             return _sidebarWidth;\r
2534         },\r
2535         //2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息                             \r
2536                 handlBaseURL:function(url){\r
2537                         var baseURLRoot=openoFrameWork.getBaseURLRoot();\r
2538                         if (baseURLRoot.length>0) {//2015年10月26日新增动态切换菜单的功能,这里的菜单还需要再次更换菜单项访问的ip端口信息\r
2539                                         baseURLRoot=openoFrameWork.getDomainURL(baseURLRoot);//去掉ip和port后多余的部分\r
2540                                         console.log("old a link href url:"+url);\r
2541                                         url=baseURLRoot+url.replace(openoFrameWork.getDomainURL(url),"");\r
2542                                         console.log("baseURLRoot:"+baseURLRoot+"      newURL:"+url);                    \r
2543                         };\r
2544                         return url;\r
2545                 },\r
2546                 \r
2547         startPageLoading: function(message) {\r
2548             dealstartPageLoading(message);\r
2549         },\r
2550         stopPageLoading: function() {\r
2551             dealstopPageLoading();\r
2552         },\r
2553         //public function to get a paremeter by name from URL\r
2554         getLocationURLParameter: function (paramName,separator) {\r
2555             var searchString = decodeURIComponent(window.location.search.substring(1)).toLowerCase(),\r
2556                 i, val, params = searchString.split(separator?separator:"&");\r
2557                         paramName=paramName.toLowerCase();\r
2558             for (i = 0; i < params.length; i++) {\r
2559                 val = params[i].split("=");\r
2560                 if (val[0] == paramName) {\r
2561                     return unescape(val[1]);\r
2562                 }\r
2563             }\r
2564             return null;\r
2565         },\r
2566         //public function to get a paremeter by name from URL\r
2567         getURLParameter: function (paramName,url) {\r
2568             var searchString = decodeURIComponent(url).toLowerCase(),\r
2569                 i, val, params = searchString.split("&");\r
2570                         paramName=paramName.toLowerCase();\r
2571             for (i = 0; i < params.length; i++) {\r
2572                 val = params[i].split("=");\r
2573                 if (val[0] == paramName) {\r
2574                     return unescape(val[1]);\r
2575                 }\r
2576             }\r
2577             return null;\r
2578         },\r
2579         // check for device touch support\r
2580         isTouchDevice: function () {\r
2581             return isTouch;\r
2582         },\r
2583         getUniqueID: function(prefix) {\r
2584             return prefix+'_' + Math.floor(Math.random() * (new Date()).getTime());\r
2585         },\r
2586         // check IE8 mode\r
2587         isIE8: function () {\r
2588             return isIE8;\r
2589         },\r
2590         // check IE9 mode\r
2591         isIE9: function () {\r
2592             return isIE9;\r
2593         },\r
2594         //check RTL mode\r
2595         isRTL: function () {\r
2596             return isRTL;\r
2597         },\r
2598                 getViewPort:function(){\r
2599                     return _getViewPort();\r
2600                 },\r
2601         // get layout color code by color name\r
2602         getLayoutColorCode: function (name) {\r
2603             if (layoutColorCodes[name]) {\r
2604                 return layoutColorCodes[name];\r
2605             } else {\r
2606                 return '';\r
2607             }\r
2608         } , \r
2609                 fixContentHeight: function () {\r
2610             dealSidebarAndContentHeight();\r
2611         },\r
2612                 dealAtoIframe:function(aObj,event){\r
2613                         var containerStr=aObj.parentsUntil('.page-container').hasClass('page-sidebar')?'page-sidebar':"";//\r
2614                         containerStr=aObj.parentsUntil('.header-inner').hasClass('hor-menu')?'header':containerStr;                     \r
2615                         dealMenuItemClick(aObj,event,containerStr);\r
2616                         _isClicked=false;\r
2617                 },\r
2618                 getDomainURL:function(urlAddress){\r
2619                         var url = $.url(urlAddress);\r
2620                         var protocol=url.attr('protocol');\r
2621                         var host=url.attr('host');\r
2622                         var port=url.attr('port');\r
2623                         var crossOrign=protocol+"://"+host+(port.length>0?":"+port:""); \r
2624                         return crossOrign;\r
2625                 },\r
2626                 getCurrentScript:function(doc) {//doc为 document对象\r
2627                         /*      注意该功能在其他脚本中调用时出safari获取到的脚本路径为本方法所在脚本的路径,\r
2628                                 其他浏览器获取到的为调用该方法的脚本所在路径\r
2629                                 取得正在解析的script节点\r
2630                         */\r
2631                         if(doc&&doc.currentScript) { //firefox 4+\r
2632                                 console.log("0、 "+doc.currentScript.src);\r
2633                                 return doc.currentScript.src;\r
2634                         }\r
2635                         // 参考 https://github.com/samyk/jiagra/blob/master/jiagra.js\r
2636                         var stack;\r
2637                         try {\r
2638                                 a.b.c(); //强制报错,以便捕获e.stack\r
2639                         } catch(e) {//safari的错误对象只有line,sourceId 或者高版本还有sourceURL\r
2640                                 stack = e.stack;                \r
2641                                 if(e.sourceURL){//safari 浏览器没有e.stack但有e.sourceURL\r
2642                                         stack=e.sourceURL;                      \r
2643                                 }else if(!stack && window.opera){\r
2644                                         //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取\r
2645                                         stack = (String(e).match(/of linked script \S+/g) || []).join(" ");\r
2646                                 }\r
2647                                 console.log("1、 "+stack);\r
2648                         }\r
2649                         if(stack) {\r
2650                                 /*e.stack最后一行在所有支持的浏览器大致如下:\r
2651                                 *chrome23:\r
2652                                 * at http://113.93.50.63/data.js:4:1\r
2653                                 *firefox17:\r
2654                                 *@http://113.93.50.63/query.js:4\r
2655                                 *opera12:\r
2656                                 *@http://113.93.50.63/data.js:4\r
2657                                 *IE10:\r
2658                                 *  at Global code (http://113.93.50.63/data.js:4:1)\r
2659                                 */\r
2660                                 console.log("2、 "+stack);\r
2661                                 stack = stack.split( /[@ ]/g).pop();//取得最后一行,最后一个空格或@之后的部分\r
2662                                 stack = stack[0] == "(" ? stack.slice(1,-1) : stack;\r
2663                                 console.log("3、 "+stack);\r
2664                                 return stack.replace(/(:\d+)?:\d+$/i, "");//去掉行号与或许存在的出错字符起始位置\r
2665                         }\r
2666                         if(doc){\r
2667                                 var nodes = doc.getElementsByTagName("script"); //只在head标签中寻找\r
2668                                 for(var i = 0, node; node = nodes[i++];) {\r
2669                                         if(node.readyState === "interactive") {\r
2670                                                 console.log("4、 "+(node.className = node.src));\r
2671                                                 return node.className = node.src;\r
2672                                         }\r
2673                                 }\r
2674                         }\r
2675                 },\r
2676                 /*下面的flag为0表示默认不触发孙子iframe中的onload事件,为1表示要触发,flag为10则对cssSrc重复执行,其他不做重复执行*/\r
2677                 SyncCSS:function(ifrm,flag,cssSrc){//将主框架中的皮肤css应用到打开的iframe页面中\r
2678                         if(!ifrm)return;\r
2679                         var ifmHeadlins = new Array();\r
2680                         if(cssSrc&&cssSrc.length>0&&cssSrc.endWith(".css")){\r
2681                             var _div = $('<a href="'+cssSrc+'"></a>');  \r
2682                                 var csslink=document.createElement("link");                     \r
2683                                 csslink.href=_div[0].href;//这里同步菜单定义中cssSrc属性指定的css文件到iframe\r
2684                                  _div = null; \r
2685                                 csslink.rel="stylesheet";\r
2686                                 csslink.type="text/css";\r
2687                                 csslink.id="ifram_csssrc";\r
2688                                 ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体\r
2689                         }\r
2690                         if(flag!=10){//当flag为10时下面的css和js都不执行\r
2691                                 if($('#style_color').length>0){\r
2692                                         var csslink=document.createElement("link");                     \r
2693                                         csslink.href=$('#style_color')[0].href.replace(".css","_ifrm.css");//这里同步的皮肤页面修改为原皮肤页面文件名后缀添加ifrm的css皮肤文件\r
2694                                         csslink.rel="stylesheet";\r
2695                                         csslink.type="text/css";\r
2696                                         csslink.id="style_color";\r
2697                                         ifmHeadlins.push({"pos":"head","scope":"all","link":csslink});//pos是添加到子iframe中的位置,scope是子窗体作用返回,one表示直接子窗体,all表示嵌套所有子窗体\r
2698                                 }\r
2699                                 // 将 font-awesome字体图标应用到模块iframe\r
2700                                 if($('#font_awesome').length>0){\r
2701                                         var awesomelink=document.createElement("link");                 \r
2702                                         awesomelink.href=$('#font_awesome')[0].href;\r
2703                                         awesomelink.rel="stylesheet";\r
2704                                         awesomelink.type="text/css";\r
2705                                         awesomelink.id="font_awesome";\r
2706                                         ifmHeadlins.push({"pos":"head","scope":"all","link":awesomelink});\r
2707                                 }\r
2708                                 // 将pym.js or pym.min.js应用到模块iframe\r
2709                                 var pymjsObj=$("script[src*='/pym.']");//模糊查找\r
2710                                 pymjsObj=pymjsObj.length>0?pymjsObj:$("script[src*='/pym1.']");\r
2711                                 if(pymjsObj.length>0){\r
2712                                         var pymjs=document.createElement("script");     \r
2713                                         pymjs.src=pymjsObj[0].src;\r
2714                                         pymjs.type="text/javascript";\r
2715                                         pymjs.id=!!pymjsObj[0].id?pymjsObj[0].id:"pymjs";\r
2716                                         ifmHeadlins.push({"pos":"head","scope":"one","link":pymjs});\r
2717                                         pymjs=document.createElement("script"); //pym脚本文件加载后要执行new pym.Child()进行iframe子窗体实例化,便于子窗体和父窗体通讯new pym.Child({ id: '"+_iframe+"' ,polling: 1000})\r
2718                                         var frameid=(_iframe.split('-').length>0?_iframe.split('-')[1]:"1");\r
2719                                         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);";\r
2720                                         pymjs.type="text/javascript";\r
2721                                         pymjs.id="pymChild";\r
2722                                         ifmHeadlins.push({"pos":"htmlend","scope":"one","link":pymjs});                         \r
2723                                 }\r
2724                                 // 将hk.js or hk.min.js应用到模块iframe\r
2725                                 var hkjsObj=$("script[src*='/hk.']");//模糊查找\r
2726                                 hkjsObj=hkjsObj.length>0?hkjsObj:$("script[src*='/hk1.']");\r
2727                                 if(hkjsObj.length>0){\r
2728                                         var hkjs=document.createElement("script");      \r
2729                                         hkjs.src=hkjsObj[0].src;\r
2730                                         hkjs.type="text/javascript";\r
2731                                         hkjs.id=!!hkjsObj[0].id?hkjsObj[0].id:"hkjs";\r
2732                                         ifmHeadlins.push({"pos":"head","scope":"one","link":hkjs});\r
2733                                         hkjs=document.createElement("script");  ////hk.js 加载后拦截ajax请求进行转发                         \r
2734                                 }\r
2735                         }\r
2736                         var crossOrign=openoFrameWork.getDomainURL(ifrm.src);                                   \r
2737                         if(     window.location.origin==crossOrign){    //第一层同域处理 \r
2738                                 for (i=0;i<ifmHeadlins.length;i++){\r
2739                                         var link=ifrm.contentDocument.getElementById(ifmHeadlins[i].link.id);\r
2740                                         if(link){\r
2741                                                         if(link.parentNode.tagName.toUpperCase==="HEAD"){\r
2742                                                                 ifrm.contentDocument.head.removeChild(link);\r
2743                                                         }else if(link.parentNode.tagName.toUpperCase==="HTML"){\r
2744                                                                 ifrm.contentDocument.removeChild(link);\r
2745                                                         }\r
2746                                         }\r
2747                                         if(ifmHeadlins[i].pos=="head")\r
2748                                                 ifrm.contentDocument.head.appendChild(ifmHeadlins[i].link);\r
2749                                         else if (ifmHeadlins[i].pos=="bodyend")\r
2750                                                 ifrm.contentDocument.body.appendChild(ifmHeadlins[i].link);\r
2751                                         else if (ifmHeadlins[i].pos=="htmlend")\r
2752                                                 ifrm.contentDocument.body.parentNode.appendChild(ifmHeadlins[i].link);\r
2753                                 }\r
2754                                 //对iframe中又有嵌套一级iframe的地方进行同步,只同步scope为all的\r
2755                                 var childifrms=ifrm.contentDocument.getElementsByTagName("iframe");\r
2756                                 if(childifrms&&childifrms.length>0){\r
2757                                         var ifmHeadlins2 = new Array();\r
2758                                         for (i=0;i<ifmHeadlins.length;i++){//筛选出scope为all的\r
2759                                                 if(ifmHeadlins[i].scope=="one") break;\r
2760                                                 ifmHeadlins2.push(ifmHeadlins[i]);              \r
2761                                         }\r
2762                                         for(j=0;j<childifrms.length;j++){\r
2763                                                 var parm={ifmHeadlins:ifmHeadlins2};\r
2764                                                 var childOrign=openoFrameWork.getDomainURL(childifrms[j].src);\r
2765                                                 if(window.location.origin==childOrign){//同域\r
2766                                                         var ifrmload=function(e){ \r
2767                                                                 for (i=0;i<e.data.ifmHeadlins.length;i++){\r
2768                                                                         var ifmheadlink=$(e.data.ifmHeadlins[i].link).clone()[0];////注意这里必须克隆,否则会出现元素移动,前面ifrm添加的都会被移出\r
2769                                                                         var link=this.contentDocument.getElementById(ifmheadlink.id);\r
2770                                                                         if(link){\r
2771                                                                                 if(link.parentNode.tagName.toUpperCase==="HEAD"){\r
2772                                                                                         this.contentDocument.head.removeChild(link);\r
2773                                                                                 }else if(link.parentNode.tagName.toUpperCase==="HTML"){\r
2774                                                                                         this.contentDocument.removeChild(link);\r
2775                                                                                 }\r
2776                                                                         }\r
2777                                                                         if(e.data.ifmHeadlins[i].pos=="head"){\r
2778                                                                                 this.contentDocument.head.appendChild(ifmheadlink);\r
2779                                                                         }else if(e.data.ifmHeadlins[i].pos=="bodyend"){\r
2780                                                                                 this.contentDocument.body.appendChild(ifmheadlink);\r
2781                                                                         }else if (ifmHeadlins2[i].pos=="htmlend"){\r
2782                                                                                 this.contentDocument.body.parentNode.appendChild(ifmheadlink);\r
2783                                                                         }\r
2784                                                                 }\r
2785                                                         }\r
2786                                                         $(childifrms[j]).off('onload',parm,ifrmload);\r
2787                                                         $(childifrms[j]).on('onload',parm,ifrmload);\r
2788                                                         $(childifrms[j]).trigger("onload");\r
2789                                                         \r
2790                                                 }else{\r
2791                                                         if(ifmHeadlins2.length>0){\r
2792                                                                 console.log('跨域访问: 系统将进入跨域访问代理处理流程 ');\r
2793                                                                 dealCrossProxy(childifrms[j].name,childOrign,ifmHeadlins2,flag);\r
2794                                                         }\r
2795                                                 }\r
2796                                         }                               \r
2797                                 }\r
2798                         }else{\r
2799                                 if(ifmHeadlins.length>0){\r
2800                                                 console.log('跨域访问: 系统将进入跨域访问代理处理流程 ');\r
2801                                                 dealCrossProxy(ifrm.name,crossOrign,ifmHeadlins,flag);\r
2802                                 }\r
2803                         }                       \r
2804                 },      \r
2805             goToURL:function(url){\r
2806                         dhByBreadcrumb = true;//全局变量,声明此次事件是由点击面包屑发起的\r
2807                         var showNav=openoFrameWork.getLocationURLParameter('showNav');\r
2808                         if(showNav=="false"){//如果不显示菜单,就强制刷新本页\r
2809                                 location.reload();\r
2810                         }else{\r
2811                    url="a[name='"+url+"']";\r
2812                $(url).click(); \r
2813                         }\r
2814          },\r
2815                 goToURLByName:function(name){\r
2816                 var showNav=openoFrameWork.getLocationURLParameter('showNav');\r
2817                         if(showNav=="false"){//如果不显示菜单,就强制刷新本页\r
2818                                 location.reload();\r
2819                         }else{\r
2820                                 url="a[name='"+name+"']";\r
2821                                 $(url).click(); \r
2822                         }       \r
2823                 },\r
2824                 goToURLByID:function(id){\r
2825                         if(!id){\r
2826                                 return;\r
2827                         }  \r
2828                         var showNav=openoFrameWork.getLocationURLParameter('showNav');\r
2829                         if(showNav=="false"){//如果不显示菜单,就强制刷新本页\r
2830                                 location.reload();\r
2831                         }else{\r
2832                                 if(id.indexOf("#")<0){\r
2833                                         id="#"+id;        \r
2834                                 }\r
2835                                 $(id).click(); \r
2836                         }\r
2837         },\r
2838                 goToPortal:function(id){\r
2839                         var _url=top.location.href;\r
2840                         console.log(_url);\r
2841                         //_url="/ngict/iui/framework/";\r
2842                         var url=$.url(_url);\r
2843                         top.location=url.attr("directory")+"uifportal.html#"+id+"/";\r
2844                 },\r
2845                 //Category\r
2846                 goToURLByIDAndNewIPPort:function(id,newIPPort,newActionStr){\r
2847                         //先把NewIPPort对象:newIPPort={menuCategoryID:'vim',ipPortStr:'htpp://10.74.151.123:31180',newTitle:''}缓存到Category数组中,\r
2848                         //menuCategoryID属性是更多菜单上配置的菜单的分类id,;\r
2849                         //ipPortStr属性是该id的菜单要替换的新的ip和端口地址字符串,包括协议部分,比如http://10.74.151.64:21169\r
2850                         //newTitle属性用于放置新开ip的页面对应到面包屑上的名字,可以为“”,空标识不关注\r
2851                         _menuCategorys.replace(newIPPort.menuCategoryID,{ipPort:newIPPort.ipPortStr,ipTitle:newIPPort.newTitle});//把当前面包削中的菜单id和该子菜单对应的父菜单关联缓存起来\r
2852                         if (store) {\r
2853                 store('menuCategoryID', newIPPort.menuCategoryID+"[menuCategoryID]"+newIPPort.ipPortStr+"[menuCategoryID]"+(!!newIPPort.newTitle?newIPPort.newTitle:""));\r
2854             }\r
2855                         //这里增加按照newIPPort.menuCategoryID分类加载more菜单的处理逻辑\r
2856                         //首先根据id找到对应的主菜单菜单项\r
2857                         var menuitem = this.findMenuItemByMenuId(id);   \r
2858                         if(!menuitem||menuitem.length<=0){//主菜单中没有找到,就找more菜单,找到id对应的more菜单项所属的主菜单项\r
2859                                 var mainMenuId = this.getMenuItemId_From_MoreMenuRelation(id);  \r
2860                                 if( !!mainMenuId&&mainMenuId.length>0 ){//more菜单中找到了id对应的主菜单项id,根据id返回主菜单项\r
2861                                         menuitem = this.findMenuItemByMenuId(mainMenuId);\r
2862                                         if(!!menuitem&&menuitem.length>0){\r
2863                                                 var more=$("#"+id,$('#pageableDiv')).parent();\r
2864                                                 $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected");\r
2865                                                 more=$('a>div.box',more);\r
2866                                                 if (more.hasClass('moreButtonSelected') == false){\r
2867                                                         more.addClass('moreButtonSelected');\r
2868                                                 }\r
2869                                                 var pagesTags=$('.item.moreButtonsTag');\r
2870                                                 if(pagesTags.length>0){\r
2871                                                         for(var i=0;i<pagesTags.length;i++){\r
2872                                                                 var tags=$(pagesTags[i]);\r
2873                                                                 tags.removeClass('active');                                     \r
2874                                                                 if($('.moreButtonSelected',tags).length>0){\r
2875                                                                         tags.addClass('active');\r
2876                                                                 }\r
2877                                                         }\r
2878                                                 }       \r
2879                                         }                                       \r
2880                                 }\r
2881                         }                                               \r
2882                         //其次找到的菜单项中newIPPort.menuCategoryID对应的src覆盖breadcrumgroupbuttonsrc属性值,\r
2883                         if(!!menuitem&&menuitem.length>0){\r
2884                                 var mulsrc=menuitem.attr(newIPPort.menuCategoryID+"-multiInsrc");\r
2885                                 if(!!mulsrc){\r
2886                                         menuitem.attr("breadcrumgroupbuttonsrc" ,mulsrc);\r
2887                                         getBreadcrumbRightButtons(mulsrc,true);\r
2888                                 }                               \r
2889                         }\r
2890                         if (waittime) {\r
2891                     clearInterval(waittime);\r
2892             }\r
2893             waittime = setInterval(function () {\r
2894                     if(moreMenusisLoaded==true){\r
2895                                                 clearInterval(waittime);\r
2896                                                 openoFrameWork.goToURLByIDAndNewAction(id,newActionStr,null);\r
2897                                         }\r
2898                 }, 10); \r
2899                 },\r
2900                 goToURLByIDAndNewAction:function(id,newActionStr,newBrowserPageOption){\r
2901                         if(!id){\r
2902                                 return;\r
2903                         }\r
2904 \r
2905                         /*if(id.indexOf("#")<0){\r
2906                                 id="#"+id;        \r
2907                         }*/\r
2908                         var menuitem = this.findMenuItemByMenuId(id);\r
2909                         //处理新开页面情况\r
2910             if(newBrowserPageOption){\r
2911                 var href = ICTFRAME_CONST_DEFAULTPAGE_PATH;\r
2912                 var hash = getLocationHashByMenuId(id);\r
2913                 var newin=window.open(href + newBrowserPageOption.paramStr + hash,newBrowserPageOption.windowTitle);\r
2914                                         newin.name=newActionStr;//注意这种传递参数的方法,被打开的页面中需要通过top.name中获取该传递的参数。\r
2915                 return;\r
2916             }\r
2917                         //$(window).off('hashchange', loadCurrentHash);                         \r
2918                         var menuItemID=menuitem?menuitem.attr("id"):"";\r
2919                         if(!!menuItemID&&menuItemID.length>0){\r
2920                                 //menuItemID="#" + menuItemID;\r
2921                                 //menuItemID=!!newActionStr?menuItemID:menuItemID+"/no";\r
2922                                 _setLocationHash(menuItemID);                                   \r
2923                         }\r
2924                         var breadcrumbBtnMenuItemParent="";\r
2925                         if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理\r
2926                                 menuItemID=id;\r
2927                                 if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存\r
2928                                         breadcrumbBtnMenuItemParent=breadcrumbBtnMenus.items(menuItemID);\r
2929                                         menuitem=this.findMenuItemByMenuId(breadcrumbBtnMenuItemParent);        \r
2930                                         //_breadcrumbSource=true;\r
2931                                 }\r
2932                                 // else{//在新增的可翻页的更多菜单里面找\r
2933                                         // var pageDiv = $('#pageableDiv');\r
2934                                         // menuitem=$('#' + menuItemID , pageDiv);\r
2935                                 // }\r
2936                                 if( menuitem && menuitem.length > 0){\r
2937                                         isMoreMenuItemClick = true;             \r
2938                                 }\r
2939                         }\r
2940                         if(!menuitem||menuitem.length<=0){\r
2941                                 //面包屑和主菜单都没有找到,情况可能是:更多菜单点击打开后,刷新,hash已经更改,但是对应的更多菜单的html没有加载,需要找到更多菜单和主菜单的对应关系\r
2942                                 var mainMenuId = this.getMenuItemId_From_MoreMenuRelation( id );\r
2943                                 if( mainMenuId ){\r
2944                                         menuitem = this.findMenuItemByMenuId(mainMenuId);\r
2945                                 }\r
2946                                 \r
2947                         }\r
2948                         if (store&&store("globleCurrentBreadcrumb")){\r
2949                                  globleCurrentBreadcrumb=store("globleCurrentBreadcrumb");\r
2950                                  //下面处理下刷新整个页面后从cookie中获取来的最后一次操作的面包屑对应的对应菜单的name属性回写,便于面包屑事件响应能够找到对应的菜单\r
2951                                  var al=$("a",$("<div>"+globleCurrentBreadcrumb+"</div>"));\r
2952                                  var alink,gal;\r
2953                                  for(i=0;i<al.length;i++){\r
2954                                         alink=$(al[i]);\r
2955                                         gal=$("a[id='"+alink.attr("id")+"']");//从整个页面查找\r
2956                                         for(j=0;j<gal.length;j++){\r
2957                                                 $(gal[j]).attr("name",alink.attr("name"));\r
2958                                         }\r
2959                                  }\r
2960                         }\r
2961                         if(menuitem&&menuitem.length>0){\r
2962                                 var panel = $('.zte-theme-panel');\r
2963                                 var navPosOption = $('.nav-pos-direction', panel).val();\r
2964                                 if(navPosOption === openoFrameWork_menu_fmenu){\r
2965                                         var hparentid=menuitem.attr("hparentid");\r
2966                                         var id=menuitem.attr("id");\r
2967                                         var i=0,menuItemH=menuitem;\r
2968                                         while (id!=hparentid&&i<20){\r
2969                                                 menuItemH=openoFrameWork.findMenuItemByMenuId(hparentid);\r
2970                                                 hparentid=menuItemH.attr("hparentid");\r
2971                                                 id=menuItemH.attr("id");\r
2972                                                 i++;\r
2973                                         };\r
2974                                         if(!menuItemH.hasClass('active'))\r
2975                                                 menuItemH.parent().addClass("active");\r
2976                                 }\r
2977                         }else{\r
2978                                 console.log("goToURLByIDAndNewAction():Can't find the menuitem.The menu ID is:"+id+".Please check if the ID or ID cache is correct.");\r
2979                         }\r
2980                         //try{\r
2981                                 var parm=undefined;\r
2982                                 if(!!newActionStr&&breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){\r
2983                                         parm={action:newActionStr,breadcrumbBtnMenuItem:menuItemID};\r
2984                                 }else if(!!newActionStr){\r
2985                                         parm={action:newActionStr};\r
2986                                 }else if(breadcrumbBtnMenuItemParent&&breadcrumbBtnMenuItemParent.length>0){\r
2987                                         parm={breadcrumbBtnMenuItem:menuItemID};\r
2988                                 }else if(mainMenuId){\r
2989                                         isMoreMenuItemClick = true;             \r
2990                                         parm={breadcrumbBtnMenuItem:menuItemID};\r
2991                                 }\r
2992                                 //if(breadChangeType){\r
2993                                 //      if(!parm){\r
2994                                 //              parm = {};\r
2995                                 //      }\r
2996                                 //      parm.breadChangeType = breadChangeType;\r
2997                                 //}\r
2998                                 if(parm&&parm.action || parm&&parm.breadChangeType) {\r
2999                                         _hashSource="dhByInterface";\r
3000                                 }\r
3001                                 \r
3002                                 if(menuitem&&menuitem.length>0){\r
3003                                         menuitem.one('click',parm,function(e){  //临时一次性的注册一次click事件处理函数,执行完毕会自动删除                   \r
3004                                                 openoFrameWork.dealAtoIframe($(this),e);\r
3005                                                 //$(window).one('hashchange', loadCurrentHash);\r
3006                                                 return false;\r
3007                                         }); \r
3008                                         menuitem.click();//后执行    \r
3009                                 }                                       \r
3010                         /*}catch(e){}\r
3011                         finally{\r
3012                                 //$(window).on('hashchange', loadCurrentHash);\r
3013                         }*/                             \r
3014         },\r
3015 \r
3016         getBreadcrumbEle:function(){\r
3017             return $('.breadcrumbUl')[0];\r
3018         },\r
3019 \r
3020 \r
3021         findMenuItemByMenuId:function( id ){\r
3022                         var menuitem=undefined;\r
3023                         var panel = $('.zte-theme-panel');\r
3024                         var navPosOption = $('.nav-pos-direction', panel).val();                        \r
3025                         \r
3026                         var items = undefined;\r
3027                         if (navPosOption === "vertical"){ //从垂直菜单里面找\r
3028                                 items=$("#page-sidebar-menu a[id='"+id+"']");\r
3029                         }else if(navPosOption === openoFrameWork_menu_horizontal){//从水平菜单里面找\r
3030                                 items=$("#main_hormenu a[id='"+id+"']");\r
3031                                 if(items.length == 0){\r
3032                     //横菜单没有找到,再在横菜单的子菜单找一次\r
3033                     items=$("#page-megachild-sidebar-menu a[id='"+id+"']");\r
3034                 }\r
3035                         }else if(navPosOption === openoFrameWork_menu_fmenu){\r
3036                 items=$("#f_hormenu a[id='"+id+"']");\r
3037                 if(items.length == 0){\r
3038                     //横菜单没有找到,再在竖菜单找一次。\r
3039                     items=$("#page-f-sidebar-menu a[id='"+id+"']");\r
3040 \r
3041                 }\r
3042                                 \r
3043             }\r
3044                         if( items&&items.length == 0 ){\r
3045                                         console.log( 'fmenu alink length is :' + $("#page-f-sidebar-menu a").length );\r
3046                                         console.log( 'cant find menu in sidemenu、megamenu and fmenu , the menu id is ' + id );                                        \r
3047                         }\r
3048                         if(items&&items.length>0){\r
3049                                 for(var i=0;i<items.length;i++){\r
3050                                         if($(items[i]).parentsUntil('.header-inner').hasClass('hor-menu')){\r
3051                                                 menuitem=$(items[i]);\r
3052                                                 break;\r
3053                                         }else if($(items[i]).parentsUntil('.page-container').hasClass('page-sidebar')){\r
3054                                                 menuitem=$(items[i]);\r
3055                                                 break;\r
3056                                         }\r
3057                                 }\r
3058                         }\r
3059                         return menuitem;\r
3060                 },\r
3061                 \r
3062                 getMenuItemId_From_MoreMenuRelation:function( id ){\r
3063                         var panel = $('.zte-theme-panel');              \r
3064                         var navPosOption = $('.nav-pos-direction', panel).val();\r
3065                         var mainMenuId = null;\r
3066                         if (navPosOption === openoFrameWork_menu_vertical){\r
3067                                 relationAry=sideBarMenu_to_moreMenu_frame;                                      \r
3068                         }else if(navPosOption === openoFrameWork_menu_horizontal){\r
3069                                 relationAry=horBarMenu_to_moreMenu_frame;\r
3070                         }else if(navPosOption === openoFrameWork_menu_fmenu){\r
3071                                 relationAry=horBarMenu_to_moreMenu_frame;\r
3072                         }                               \r
3073                         if ( !relationAry || !id ){\r
3074                                 return;\r
3075                         }\r
3076                         for ( var i = 0 ; i < relationAry.length ; i++ ){\r
3077                                 var eachMain = relationAry[i];\r
3078                                 var moreMenuIds = eachMain.moreMenuIds;\r
3079                                 for ( var j = 0 ; j < moreMenuIds.length ; j++ ){\r
3080                                         if( moreMenuIds[j] && moreMenuIds[j] == id ){\r
3081                                                 return eachMain.mainMenuId;\r
3082                                         }\r
3083                                 }\r
3084                         }\r
3085                         return null;                    \r
3086                 },\r
3087                 \r
3088                 getMenuItemFoucsByID : function (id) {\r
3089                     if(!id){\r
3090                                 return;\r
3091                         }\r
3092                         var menuitem=undefined;\r
3093                         // var items=$("a[id='"+id+"']");\r
3094                         var items = undefined;\r
3095                         var panel = $('.zte-theme-panel');\r
3096                         var navPosOption = $('.nav-pos-direction', panel).val();\r
3097             if (navPosOption === "vertical"){ //从垂直菜单里面找\r
3098                 items=$("#page-sidebar-menu a[id='"+id+"']");\r
3099             }else if(navPosOption === openoFrameWork_menu_horizontal){//从水平菜单里面找\r
3100                 items=$("#main_hormenu a[id='"+id+"']");\r
3101                 if(items.length == 0){\r
3102                     //横菜单没有找到,再在横菜单的子菜单找一次\r
3103                     items=$("#page-megachild-sidebar-menu a[id='"+id+"']");\r
3104                 }\r
3105             }else if(navPosOption === openoFrameWork_menu_fmenu){\r
3106                 items=$("#f_hormenu a[id='"+id+"']");\r
3107                 if(items.length == 0){\r
3108                     //横菜单没有找到,再在竖菜单找一次。\r
3109                     items=$("#page-f-sidebar-menu a[id='"+id+"']");\r
3110 \r
3111                 }\r
3112             }\r
3113                         if(items.length>0){\r
3114                                 for(var i=0;i<items.length;i++){\r
3115                                         if($(items[i]).parentsUntil('.header-inner').hasClass('hor-menu')){\r
3116                                                 menuitem=$(items[i]);\r
3117                                                 break;\r
3118                                         }else if($(items[i]).parentsUntil('.page-container').hasClass('page-sidebar')){\r
3119                                                 menuitem=$(items[i]);\r
3120                                                 break;\r
3121                                         }\r
3122                                 }\r
3123                         }\r
3124                         var breadcrumbBtnMenuItemParent="";\r
3125                         if(!menuitem||menuitem.length<=0){//没有找到该菜单,可能是面包削中的,需要额外处理\r
3126                                 menuItemID=id;\r
3127                                 if (breadcrumbBtnMenus.contains(menuItemID)) {//有缓存\r
3128                                         breadcrumbBtnMenuItemParent="#"+breadcrumbBtnMenus.items(menuItemID);\r
3129                                         menuitem=$(breadcrumbBtnMenuItemParent);\r
3130                                 }\r
3131                         }\r
3132                         var parm = undefined;\r
3133                         if (breadcrumbBtnMenuItemParent && breadcrumbBtnMenuItemParent.length > 0) {\r
3134                             parm = {\r
3135                                 breadcrumbBtnMenuItem : menuItemID\r
3136                             };\r
3137                         }\r
3138                     if (menuitem && menuitem.length > 0) {\r
3139                         menuitem.one('click', parm, function (e) { //临时一次性的注册一次click事件处理函数,执行完毕会自动删除\r
3140                             var containerStr = $(this).parentsUntil('.page-container').hasClass('page-sidebar') ? 'page-sidebar' : ""; //\r
3141                             containerStr = $(this).parentsUntil('.header-inner').hasClass('hor-menu') ? 'header' : containerStr;\r
3142                             _isClicked = false;\r
3143                             dealMenuItemGetFocus($(this),e,containerStr);\r
3144                             return false;\r
3145                         });\r
3146                         menuitem.click(); //后执行\r
3147                     }\r
3148                 },     \r
3149       // 处理面包削中的按钮菜单增加的导航连接,显示在iframe中\r
3150                 openbreadcrumbLink:function(aObject,e) {\r
3151                 var url = aObject.attr("href");\r
3152                 if(!url||url.length<2)\r
3153                     return;\r
3154                                 e.preventDefault();                             \r
3155                 dealScrollTo(); \r
3156                                 var menuItemID=aObject.attr("id");\r
3157                                 if(!!menuItemID&&menuItemID.length>0){\r
3158                                         _setLocationHash(menuItemID);   \r
3159                                         _hashSource="dhByInterface";\r
3160                                 }\r
3161                                         dealstartPageLoading();\r
3162                                 dealIframe(aObject,e);\r
3163                 },\r
3164                 getURLParam:function(name){\r
3165             var reg = new RegExp("(^|&)" + name.toLowerCase() + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象\r
3166             var search =decodeURIComponent(location.search.substring(1)).toLowerCase(); \r
3167             var r =search.match(reg);  //匹配目标参数\r
3168             if (r != null) return unescape(r[2]); \r
3169             return null; //返回参数值\r
3170                 }\r
3171     };\r
3172 }();\r
3173 \r
3174 //抽取html片段中任意位置的script标签(包括代码是内嵌的情况)逐个运行(不会在单个script加载不到的时候停下来)\r
3175 function runHtmlScripts(s) {\r
3176         var div = document.createElement('div');\r
3177         div.innerHTML = s;\r
3178         var scripts = div.getElementsByTagName('script');\r
3179 \r
3180         var currentRunningScriptSrcPath = {};\r
3181         $(scripts).each(function() {\r
3182                 var src = this.src;\r
3183                 src = openoFrameWork.handlBaseURL(src);\r
3184                 if (src) {\r
3185                         currentRunningScriptSrcPath[src.substring(src.lastIndexOf("/") + 1)] = src.substring(0, src.lastIndexOf("/") + 1);\r
3186                         $.getScript(src);\r
3187                 } else {\r
3188                         $.globalEval(this.text || this.textContent || this.innerHTML || '');\r
3189                 }\r
3190         });\r
3191 };\r
3192 \r
3193 function stripHtmlScripts(htmlContent) {\r
3194         var divContent = document.createElement('div');\r
3195         divContent.innerHTML = htmlContent;\r
3196         var scripts = divContent.getElementsByTagName('script');\r
3197 \r
3198         $(scripts).each(function() {\r
3199                 this.src = openoFrameWork.handlBaseURL(this.src);\r
3200                 this.parentNode.removeChild(this);\r
3201         });\r
3202         return divContent.innerHTML;\r
3203 };\r
3204 \r
3205 function getsiderBarMenu(url){\r
3206     if (url.length<2){\r
3207         return;\r
3208     }\r
3209         url=openoFrameWork.handlBaseURL(url);      \r
3210     openoFrameWork.startPageLoading();//菜单加载中请稍候....\r
3211     var pagesidebar=$('#page-sidebar-menu');\r
3212     pagesidebar.empty();\r
3213     pagesidebar.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");\r
3214     $.ajax({\r
3215         type: "GET",\r
3216         cache: false,\r
3217         url: url,\r
3218         dataType: "html", \r
3219         success: function (res) {               \r
3220                         //去除script标签以后添加到主框架以防止append方法因为加载script标签失败导致后面的代码无法运行\r
3221                         //res = stripHtmlScripts(res);\r
3222                         var resScriptsSriped = stripHtmlScripts(res);\r
3223             pagesidebar.append(resScriptsSriped);\r
3224                         runHtmlScripts(res);                    \r
3225                         \r
3226             siderBarMenuAuthentication();\r
3227             dealMysqlBackupMenu();\r
3228             //loadi18n_WebFramework_sideMenu();\r
3229                         setTimeout(function () {\r
3230                 openoFrameWork.stopPageLoading();\r
3231                             goToHomePage();\r
3232             }, 1000);\r
3233         },\r
3234         error: function (xhr, ajaxOptions, thrownError) {\r
3235             //$('#page-sidebar-menu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统菜单失败!;//加载系统菜单失败!\r
3236         }\r
3237     });\r
3238 };\r
3239 var setLayoutValueByCookie = function () {\r
3240             var panel = $('.zte-theme-panel');\r
3241             if (store('layout-option') != undefined) {\r
3242                 $('.layout-option', panel).val(store('layout-option'));\r
3243             }\r
3244                 if (store('language-option') != undefined) {\r
3245                 $('.language-option', panel).val(store('language-option'));\r
3246             }\r
3247                 if (store('sidebar-option') != undefined) {\r
3248                 $('.sidebar-option', panel).val(store('sidebar-option'));\r
3249             }\r
3250                 if (store('header-option') != undefined) {\r
3251                 $('.header-option', panel).val(store('header-option'));\r
3252             }\r
3253                 if (store('sidebar-pos-option') != undefined) {\r
3254                 $('.sidebar-pos-option', panel).val(store('sidebar-pos-option'));\r
3255             }\r
3256                 var horMenuLoadTip = $("[class='nav-load-error']", $(".hormenu"));\r
3257                 var sideMenuLoadTip = $("[class='nav-load-error']", $("[class='page-sidebar-menu']"));\r
3258                 // 横竖菜单都无错误提示,都正确加载\r
3259         //      if ((!horMenuLoadTip || horMenuLoadTip.length <= 0) && (!sideMenuLoadTip || sideMenuLoadTip.length <= 0)) {\r
3260                         // if (store('nav-pos-direction') != undefined) {\r
3261                                 // var navPosOption = store('nav-pos-direction');\r
3262                                 // $('.nav-pos-direction', panel).val(navPosOption);\r
3263                         // } else {\r
3264                                 $('.nav-pos-direction', panel).val('fmenu');\r
3265                                 // $.ajax({\r
3266                                         // "dataType" : 'json',\r
3267                                         // "type" : "GET",\r
3268                                         // "async" : false,\r
3269                                          // url : FrameConst.REST_GET_FRAME_MENUDIRECTION + "&tmpstamp=" + new Date().getTime(),\r
3270                                         // "success" : function (obj) {\r
3271                                                 // if (obj.value && (obj.value != "")) {\r
3272                                                         // $('.nav-pos-direction', panel).val(obj.value);\r
3273                                                 // }\r
3274                                         // }\r
3275                                 // });\r
3276                         //}\r
3277                 // } else {\r
3278                         // $('.nav-pos-direction', panel).attr("disabled", true);\r
3279                 // }\r
3280 };\r
3281 \r
3282 \r
3283 function iniFMenu() {\r
3284         var fsidemenu = $('#' + fMenuSiderDivId);\r
3285 \r
3286         if (fsidemenu) {\r
3287                 openoFrameWork.startPageLoading();\r
3288 \r
3289                 var menuContent = initLeftMenu();\r
3290                 fsidemenu.empty();\r
3291                 fsidemenu.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");\r
3292                 fsidemenu.append(menuContent);\r
3293                 loadi18n_WebFramework('web-framework-menu-i18n', 'i18n/', 'openo_frame_left_menu_i18n');\r
3294 \r
3295                 openoFrameWork.stopPageLoading();\r
3296         }\r
3297 };\r
3298 \r
3299 function goToHomePage(){\r
3300     locationhash = openoFrameWork.getLocationHash();\r
3301         if(!!locationhash&&locationhash.length>0){//有锚点,直接触发\r
3302                 var newIPPort=null;                             \r
3303                 if (store&&store('menuCategoryID')) {\r
3304                         var s=store('menuCategoryID').split('[menuCategoryID]');\r
3305                         if(s.length>2){\r
3306                            newIPPort={menuCategoryID:s[0],ipPortStr:s[1],newTitle:s[2]};\r
3307                         }                               \r
3308         }\r
3309                 if(!!newIPPort){\r
3310                         openoFrameWork.goToURLByIDAndNewIPPort(locationhash,newIPPort,null);\r
3311                 }else{\r
3312                         openoFrameWork.goToURLByIDAndNewAction(locationhash,null,null);\r
3313                 }\r
3314         }else{//否则还是模拟点击配置了start类的菜单\r
3315             var containerStr = "";\r
3316                 //var sidermenu = $("[class='page-sidebar-menu']", $("[class='page-sidebar navbar-collapse collapse']"));\r
3317                 var sidermenu = $("#page-sidebar-menu");\r
3318                 var hormenu = $("#main_hormenu");\r
3319         var fhormenu = $('#' + fMenuMegaDivId);\r
3320                 var fhormenusider = $('#page-f-sidebar-menu');          \r
3321         var startmenu = null;\r
3322                 var navPosOption = $('.nav-pos-direction', panel).val();                \r
3323                 // 侧边栏显示,根据侧边栏CSS选择\r
3324                 if (navPosOption === "vertical") {\r
3325                     //containerStr=$('.page-sidebar').length>0?'.page-sidebar':"";\r
3326             startmenu = $('.iframe.start' , sidermenu);\r
3327                         dealStartMenu( startmenu, sidermenu );                                                                  \r
3328                 }\r
3329                 // 水平菜单显示,根据水平菜单CSS选择\r
3330                 else if (navPosOption === "horizontal") {\r
3331                     //containerStr=$('.hor-menu').length>0?'.header':containerStr;\r
3332             startmenu = $('.iframe.start' , hormenu);\r
3333                         dealStartMenu( startmenu, hormenu );\r
3334 \r
3335                 }\r
3336         //F菜单的恒菜单显示\r
3337         else if (navPosOption === openoFrameWork_menu_fmenu) {\r
3338             //containerStr=$('.hor-menu').length>0?'.header':containerStr;\r
3339             startmenu = $('.iframe.start' ,fhormenu);\r
3340                         if (startmenu && startmenu.length < 1) {\r
3341                                 startmenu = $('.iframe.start' ,fhormenusider);\r
3342                         }\r
3343                         dealStartMenu( startmenu, fhormenu,fhormenusider );                     \r
3344         }\r
3345         }       \r
3346 }; \r
3347 var dealStartMenu = function(startmenu , menuContainer,menuContainer2 ){\r
3348                 var timer =setInterval(function () {\r
3349                         if(startmenu&&startmenu.length>0){\r
3350                                 startmenu.click();\r
3351                                 clearInterval(timer);\r
3352                         }else{\r
3353                                 console.log('the start menu click event is not be triggerd ,so do it repeat!!');\r
3354                                 $('a[operation]', menuContainer).each(function () {\r
3355                                         startmenu = $(this);\r
3356                                         return false;\r
3357                                 });\r
3358                                 if (menuContainer2&&startmenu && startmenu.length < 1) {\r
3359                                         $('a[operation]', menuContainer2).each(function () {\r
3360                                                 startmenu = $(this);\r
3361                                                 return false;\r
3362                                         });\r
3363                                 }\r
3364                         }\r
3365                 }, 100);\r
3366                 handeCtxMenuitem();\r
3367         }\r
3368 // 屏蔽横竖菜单项的右键功能\r
3369 function handeCtxMenuitem() {\r
3370         $(".page-sidebar ul li a").each(function() {\r
3371                 if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") {\r
3372                         $(this).attr("oncontextmenu", "return false");\r
3373                 }\r
3374         });\r
3375         $(".hormenu li a").each(function() {\r
3376                 if ($(this).attr("href") && $(this).attr("href") != "javascript:;" && $(this).attr("href") != "#") {\r
3377                         $(this).attr("oncontextmenu", "return false");\r
3378                 }\r
3379         });\r
3380 }\r
3381 function initBaseInfo(){    \r
3382     $("#logout_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_logout'));\r
3383     $("#fullscreen_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_group_fullscreen'));\r
3384     $("#changePwd_label").text($.i18n.prop('com_zte_ums_ict_framework_ui_changePwd'));\r
3385     $("#com_zte_ums_ict_framework_moudle_about").text($.i18n.prop('com_zte_ums_ict_framework_moudle_about'));\r
3386         $("#com_zte_ums_ict_framework_moudle_help").text($.i18n.prop('com_zte_ums_ict_framework_moudle_help'));\r
3387         $("#zte_menu-toggler").attr("title",$.i18n.prop('com_zte_ums_ict_framework_moudle_menutoggler'));       \r
3388 };\r
3389 window.closeModal = function(modalid) {\r
3390     if(!modalid){\r
3391        return;\r
3392     }    \r
3393     if(modalid.indexOf("#")<0){\r
3394       modalid="#"+modalid;        \r
3395     }\r
3396     $(modalid).modal('hide');  \r
3397 };\r
3398 function getLcsRight(lcsoperations) {\r
3399         var lcsrights = new Array();\r
3400         if (lcsoperations && (lcsoperations.length > 0)) {\r
3401                 // 请求后台license value\r
3402                 //----test data----\r
3403                 // var testjson = '{"data":[{"id":"mylcs","name":"xxx","value":"false"}]}';\r
3404                 // var testopt = eval('(' + testjson + ')');\r
3405                 // var testarray = testopt.data;                \r
3406                 //-----end test data---                         \r
3407                 var keys = {\r
3408                         "keys" : lcsoperations\r
3409                 };\r
3410                 var jsonvalues = JSON.stringify(keys);\r
3411                 var data = {\r
3412                         "data" : jsonvalues\r
3413                 };\r
3414                 var url=FrameConst.REST_GETLICENSEINFO + "?tmpstamp=" + new Date().getTime();\r
3415                 url=openoFrameWork.handlBaseURL(url);\r
3416                 $.ajax({\r
3417                         "dataType" : 'json',\r
3418                         "type" : "GET",\r
3419                         "async" : false,\r
3420                         "url" : url,\r
3421                         "data" : data,\r
3422                         //"contentType" : 'application/json; charset=utf-8',\r
3423                         "success" : function (response) {\r
3424                                 if (response) {\r
3425                                         lcsrights = response.data;\r
3426                                 }\r
3427                         },\r
3428                         "error" : function (XMLHttpRequest, textStatus, errorThrown) {\r
3429                                 lcsrights = null;\r
3430                         }\r
3431                 });\r
3432                 return lcsrights;\r
3433         }\r
3434         return lcsrights;\r
3435 }\r
3436 // 侧边栏菜单鉴权\r
3437 function siderBarMenuAuthentication() {\r
3438         // license 鉴权\r
3439         var menuids = new Array();\r
3440         var lcsoperations = new Array();\r
3441         //从页面DOM取得菜单license项。\r
3442         $('a[licenseid]', $('.page-sidebar-menu')).each(function () {\r
3443                 var licenseid = $(this).attr("licenseid");\r
3444                 if (licenseid) {\r
3445                         lcsoperations.push(licenseid);\r
3446                         var id = $(this).attr("id");\r
3447                         menuids.push(id);\r
3448                 }\r
3449         });\r
3450         var lcsrights = getLcsRight(lcsoperations);// 取得license数据。\r
3451         if (lcsrights && (lcsrights.length == menuids.length)) {\r
3452                 // 根据后台license值判断所在菜单项是否显示\r
3453                 for (var i = 0; i < menuids.length; i++) {\r
3454                         var id = menuids[i];\r
3455                         var lcskey = lcsoperations[i];\r
3456                         var lcsitem = lcsrights[i];\r
3457                         // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项\r
3458                         if (lcsitem.value != "True") {\r
3459                                 $('#'+id, $('.page-sidebar-menu')).parent().remove();\r
3460                         }\r
3461                 }\r
3462         }       \r
3463     var operations = new Array();\r
3464     $('a[operation]', $('.page-sidebar-menu')).each(function () {\r
3465         var operation = $(this).attr("operation");\r
3466                 if (operation) {\r
3467                         operations.push(operation);\r
3468                 }\r
3469     }); // 遍历菜单项,提取所有的操作码\r
3470     var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断\r
3471     $('a[operation]', $('.page-sidebar-menu')).each(function () {\r
3472         var operation = $(this).attr("operation");\r
3473                 if (operation) {\r
3474                         if (!hasRight(operation, rightObj)) {\r
3475                                 $(this).parent("li").remove(); // 删除没有权限的菜单项\r
3476                         }\r
3477                 }\r
3478     });\r
3479     rebuildSiderBarMenu();\r
3480 };\r
3481 // 横向菜单栏鉴权\r
3482 function horMenuAuthentication( horMenuId ) {\r
3483         // license 鉴权\r
3484         var menuids = new Array();\r
3485         var lcsoperations = new Array();\r
3486         //从页面DOM取得菜单license项。\r
3487         $('a[licenseid]', $('#'+ horMenuId)).each(function () {\r
3488                 var licenseid = $(this).attr("licenseid");\r
3489                 if (licenseid) {\r
3490                         lcsoperations.push(licenseid);\r
3491                         var id = $(this).attr("id");\r
3492                         menuids.push(id);\r
3493                 }\r
3494         });\r
3495         var lcsrights = getLcsRight(lcsoperations);// 取得license数据。\r
3496         if (lcsrights && (lcsrights.length == menuids.length)) {\r
3497                 // 根据后台license值判断所在菜单项是否显示\r
3498                 for (var i = 0; i < menuids.length; i++) {\r
3499                         var id = menuids[i];\r
3500                         var lcskey = lcsoperations[i];\r
3501                         var lcsitem = lcsrights[i];\r
3502                         // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项\r
3503                         if (lcsitem.value != "True") {\r
3504                                 $('#'+id, $('#'+ horMenuId)).parent().remove();\r
3505                         }\r
3506                 }\r
3507         }\r
3508     var operations = new Array();\r
3509     $('a[operation]', $('#'+ horMenuId)).each(function () {\r
3510         var operation = $(this).attr("operation");\r
3511                 if (operation) {\r
3512                         operations.push(operation);\r
3513                 }\r
3514     }); // 遍历菜单项,提取所有的操作码\r
3515     var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断\r
3516     $('a[operation]', $('#'+ horMenuId)).each(function () {\r
3517         var operation = $(this).attr("operation");\r
3518                 if (operation) {\r
3519                         if (!hasRight(operation, rightObj)) {\r
3520                                 $(this).parent("li").remove(); // 删除没有权限的菜单项\r
3521                         }\r
3522                 }\r
3523     });\r
3524     rebuildHorMenu();\r
3525 };\r
3526 \r
3527 // “更多操作”分组按钮鉴权\r
3528 function groupButtonAuthentication() {\r
3529         // license 鉴权\r
3530         var menuids = new Array();\r
3531         var lcsoperations = new Array();\r
3532         //从页面DOM取得菜单license项。\r
3533     $('a[licenseid]', $('.more-botton-zone > li.btn-group')).each(function () {\r
3534                 var licenseid = $(this).attr("licenseid");\r
3535                 if (licenseid) {\r
3536                         lcsoperations.push(licenseid);\r
3537                         var id = $(this).attr("id");\r
3538                         menuids.push(id);\r
3539                 }               \r
3540         });\r
3541         var lcsrights = getLcsRight(lcsoperations);// 取得license数据。\r
3542         if (lcsrights && (lcsrights.length == menuids.length)) {\r
3543                 // 根据后台license值判断所在菜单项是否显示\r
3544                 for (var i = 0; i < menuids.length; i++) {\r
3545                         var id = menuids[i];\r
3546                         var lcskey = lcsoperations[i];\r
3547                         var lcsitem = lcsrights[i];\r
3548                         // 菜单项如果配了licenseid, 并且不是true字符串, 则移除菜单项\r
3549                         if (lcsitem.value != "True") {\r
3550                 $('#'+id, $('.more-botton-zone > li.btn-group')).parent().remove();\r
3551                         }\r
3552                 }\r
3553         }\r
3554         // 增加mysql判断,如果数据库为mysql,去掉基础数据备份功能菜单项\r
3555         var dbType = openoFrameWork_conf.dbType;\r
3556         if (dbType == "mysql") {\r
3557         $("#uep-ict-backup-baseDataBack",$('.more-botton-zone > li.btn-group')).parent().remove();\r
3558         }       \r
3559     var operations = new Array();\r
3560     $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () {\r
3561         var operation = $(this).attr("operation");\r
3562                 if (operation) {\r
3563                         operations.push(operation);\r
3564                 }\r
3565     }); // 遍历菜单项,提取所有的操作码\r
3566     var rightObj = getAllOperCodeRights(operations); // 对操作码进行鉴权判断\r
3567     $('a[operation]', $('.more-botton-zone > li.btn-group')).each(function () {\r
3568         var operation = $(this).attr("operation");\r
3569                 if (operation) {\r
3570                         if (!hasRight(operation, rightObj)) {\r
3571                                 $(this).parent("li").remove(); // 删除没有权限的菜单项\r
3572                         }\r
3573                 }\r
3574     });\r
3575     // 如果“更多菜单”下没有子菜单了,则删除整个“更多菜单”下拉框。\r
3576     if ($('li > a', $('.more-botton-zone > li.btn-group')).length == 0) {\r
3577         $('.more-botton-zone > li.btn-group').remove();\r
3578     }\r
3579 };\r
3580 // 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面\r
3581 function rebuildSiderBarMenu() {\r
3582     if ($('a.start').length == 0) {\r
3583         $('li > a[href!="javascript:;"]', $('.page-sidebar-menu')).eq(0).addClass("start");\r
3584     }\r
3585     $('ul.sub-menu', $('.page-sidebar-menu')).each(function () {\r
3586         if ($(this).has('li').length == 0) {\r
3587             $(this).parent("li").remove();\r
3588         }\r
3589     });\r
3590 };\r
3591 // 删除没有子菜单的一级菜单,查看新菜单是否配了登录默认页面,如没有则指定第一个有权限的菜单作为登录后默认页面\r
3592 function rebuildHorMenu() {\r
3593     if ($('a.start').length == 0) {\r
3594         $('li > a[href!="#"]', $('#main_hormenu')).eq(0).addClass("start");\r
3595     }\r
3596     $('ul.mega-menu-submenu', $('#main_hormenu')).each(function () {\r
3597         if ($(this).has('li > a').length == 0) {\r
3598             $(this).remove(); // 删空的分组列\r
3599         }\r
3600     });\r
3601     //删除增加的分组div\r
3602     $('div.zteDivWidth', $('#main_hormenu')).each(function () {\r
3603         if ($(this).has('ul').length == 0) {\r
3604             $(this).remove(); // 删空的分组列\r
3605         }\r
3606     });\r
3607     $('ul.dropdown-menu', $('#main_hormenu')).each(function () {\r
3608         if ($(this).has('ul').length == 0) {\r
3609             $(this).parent("li").remove(); // 删空的一级菜单栏\r
3610         }\r
3611     });\r
3612     $('li.divider', $('#main_hormenu')).each(function () {\r
3613         if ($(this).next().hasClass('divider')) {\r
3614             $(this).remove(); // 连续出现分隔线则删除一个\r
3615         }\r
3616     });\r
3617     $('li.divider', $('#main_hormenu')).each(function () {\r
3618         if ($(this).next().length == 0) {\r
3619             $(this).remove(); // 如果分隔线在最后一行,则删除之\r
3620         }\r
3621     });\r
3622 }\r
3623 //获取页面菜单栏所有的操作码权限\r
3624 function getAllOperCodeRights(operations) {\r
3625     var rights = new Array();\r
3626         if( operations && operations.length > 0 ){\r
3627                 var data = {\r
3628                         "operations" : operations\r
3629                 };\r
3630                 var sendData = JSON.stringify(data);\r
3631                 var url=FrameConst.REST_CHECKRIGHT + "?data=" + sendData + "&tmpstamp=" + new Date().getTime();\r
3632                 url=openoFrameWork.handlBaseURL(url);\r
3633                 $.ajax({\r
3634                         "dataType" : 'json',\r
3635                         "type" : "GET",\r
3636                         "async" : false,\r
3637                         "url" : url,\r
3638                         "data" : null,\r
3639                         //"contentType" : 'application/json; charset=utf-8',\r
3640                         "success" : function (response) {\r
3641                                 rights = response.value;\r
3642                         },\r
3643                         "error" : function (XMLHttpRequest, textStatus, errorThrown) {\r
3644                                 if (XMLHttpRequest.status == 401) {\r
3645                                         window.location.replace("login.html");\r
3646                                  } else {\r
3647                                         console.log('Communication Error!');\r
3648                                 }\r
3649                         }\r
3650                 });\r
3651         }\r
3652     return {\r
3653         opCodes : operations,\r
3654         rights : rights\r
3655     };\r
3656 };\r
3657 // 判断操作码是否有权限\r
3658 function hasRight(opCode, rightObj) {\r
3659     for (var i = 0; i < rightObj.opCodes.length; i++) {\r
3660         if (rightObj.opCodes[i] == opCode) {\r
3661             return (rightObj.rights[i] == true);\r
3662         }\r
3663     }\r
3664     return false;\r
3665 };\r
3666 // 处理mysql环境下备份菜单的合并问题\r
3667 function dealMysqlBackupMenu() {\r
3668         var dbType = openoFrameWork_conf.dbType;\r
3669     if (dbType !== undefined && dbType !== "mysql") {\r
3670         return;\r
3671     }\r
3672     var sidermenu = $("[class='page-sidebar-menu']");\r
3673     var hormenu = $(".hormenu");\r
3674         //这段代码先这么写,html的位置不一定正确,如果后面位置不一致,再修改。\r
3675     if (sidermenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) {\r
3676                 $('#uep-ict-backup-dataBackup', sidermenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH);\r
3677     }\r
3678         if (hormenu.length > 0 && $('#uep-ict-backup-dataBackup').length > 0) {\r
3679                 $('#uep-ict-backup-dataBackup', hormenu).attr("breadcrumGroupButtonSrc", ICTFRAME_CONST_DATABACKUP_PATH);\r
3680         $('#uep-ict-backup-dataBackup').parent('li').attr('style', 'display:block');\r
3681         $('#uep-ict-backup-allDbStructBackup').parent('li').attr('style', 'display:none');\r
3682         $('#uep-ict-backup-baseDataBack').parent('li').attr('style', 'display:none');\r
3683     }\r
3684 };\r
3685 // 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作,\r
3686 // 浏览器缩小后导航栏隐藏的情况下点击navbar-toggle显示菜单的前置工作,\r
3687 function dealMavToggle(navtoggle) {\r
3688     var sidermenu  = $("#page-sidebar-menu");\r
3689         var hormenu = $("#main_hormenu");\r
3690         var panel = $(".zte-theme-panel");\r
3691         var siderbarpos = $(".nav-pos-direction", panel).val()\r
3692         if ("hidden" == $(navtoggle).attr("navtoggledispattr")) {\r
3693                 $(navtoggle).attr("navtoggledispattr", "display");\r
3694                 sidermenu.css('display','block');//侧边栏显示\r
3695                 hormenu.css("display", "none");//隐藏水平菜单栏          \r
3696         } else {\r
3697                 $(navtoggle).attr("navtoggledispattr", "hidden");\r
3698                 sidermenu.css('display','none');//侧边栏隐藏\r
3699                 hormenu.css("display", "none");\r
3700         }       \r
3701 };\r